我用相机录制了视频,当我打开包含视频文件的目录时,修改时间总是错误的。
这是视频的屏幕截图,清楚地显示了左下角相机提供的正确时间和日期:
然而,这里是输出ls -ltr
:
brett@brett-HP-Laptop-17-bs0xx:~/Vidéos$ ls -ltr
total 9604
-rw-r--r-- 1 brett brett 9832867 avr 27 05:04 REC_0039.MOV
brett@brett-HP-Laptop-17-bs0xx:~/Vidéos$
Linux 显示的修改时间比该视频的实际拍摄时间晚几个小时。为什么会出现这种情况?如何在文件管理器中显示正确的时间?
答案1
与所有类 Unix 系统一样,Linux 在内部以 UTC 格式存储文件时间戳,当您获取目录列表时,时间戳将转换为会话中选定的时区。
如果相机或 Linux 系统的时区设置不正确,则可能会发生此类错误。相机显然是正确的当地的时间,但可能错误地将其转换为 UTC,导致时间戳不正确;或者您的笔记本电脑使用的时区与您预期的不同,导致 UTC -> 本地时间转换出现错误。
date; date -u
在笔记本电脑上运行。它将显示两个时间戳:本地时间和 UTC 时间。如果本地时间正确但 UTC 错误,则说明您的时区错误并且笔记本电脑的系统时钟的 UTC 时间不正确。
如果您正在查看从相机中取出的存储卡之类的东西,您可能需要使用安装选项来指定相机使用的时区:在 VFAT/FAT32/exFAT 文件系统上,Linux 假定文件系统时间戳是使用本地时间存储的默认。
mount 选项tz=UTC
将假设相机在其文件系统上使用原始 UTC,而不是任何本地时间,或者time_offset=<minutes>
如果相机使用与笔记本电脑使用的非 UTC 不同的时间,则可用于显式指定时间偏移。
答案2
相机文件上的文件修改时间为当地时间。然而,Linux 假设相机的时间采用 UTC 格式,并将其转换为本地时间,因此相机时间戳与 Linux 显示的修改时间之间存在四个小时的差异。
在安装相机之前,请运行以下命令:
timedatectl set-local-rtc 1
现在安装的相机在文件管理器中显示正确的时间。
要使 RTC 恢复使用 UTC,请运行:
timedatectl set-local-rtc 0