(注意:这可能是一个超级用户问题,因为它更多地涉及计算机如何解释时间戳......但它对所有处理源自外部设备的时间戳的编程都有影响。)
问题构建:
- 格式化FAT32,NTFS和exFAT中的3张SD卡
- 使用TZ不可知设备(例如相机或科学仪器,在此处设置时间和日期,但没有TZ)在每个上面创建一个文件正好在12:00:00
- 在加利福尼亚时间(UTC-7)
将这三个文件复制到计算机上
- 在每个上运行python:
os.path.getmtime()
。结果会有所不同。
醇>
IT似乎#3是至关重要的一步。以下是我认为时间戳发生的事情 - 任何人都可以确认这是否正确吗?
- 由于 FAT32 在本地时间记录时间戳,因此计算机假定该文件是在加利福尼亚时间12:00(UTC-7)的12:00:00创建的,因此复制时间戳为19:00的文件: 00(UTC)
- 由于 NTFS 以UTC格式记录时间戳,因此计算机假定该文件是在12:00:00 UTC创建的,因此复制时间戳为12:00:00(UTC)的文件< / LI>
- 由于 exFAT 是奇数,它以UTC格式存储 - 但可以在主记录中包含TZ偏移 - 因此所有假设都会消失。 计算机是否采用UTC或UTC-7,因为它复制了没有TZ偏移的exFAT时间戳?
醇>
相关:
How do I get the correct modified datetime of a FAT32 file, regardless of timezone in .NET?