我想将一些旧扫描图片的创建日期设置为 1970 年的某个日期。如果我使用第三方工具执行此操作,Windows 资源管理器会将日期显示为空白。我以为 NTFS 可以回溯到 1600 年代。这是怎么回事?
答案1
快速分析
浏览文件夹时,Windows 资源管理器不会显示特定范围之外的日期:
MS-DOS 日期格式只能表示 1980 年 1 月 1 日至 2107 年 12 月 31 日之间的日期。
可以通过手动设置日期来确认:
我的假设是,这种行为与向后兼容性有关。当NTFS不存在,创建、修改和访问日期被设计为各占用 16 位(2 字节)。信息打包如下:
Bits | Description
-------------------------------------------------------
0–4 | Day (1-31)
5–8 | Month (1 = January, 2 = February, etc.)
9-15 | Year offset from 1980 (0 = 1980, 1 = 1981, etc.)
为了节省位数,年份不以整数形式存储,而是使用偏移量。由于有 7 位,这意味着2^7 = 128
可能的值,即 1980-2107。
至于 NTFS,文档是这样说的:
A文件时间是一个 64 位值,表示自 1601 年 1 月 1 日凌晨 12:00(协调世界时,UTC)以来经过的 100 纳秒间隔数。系统会在应用程序创建、访问和写入文件时记录文件时间。
NTFS 文件系统以 UTC 格式存储时间值,因此不受时区或夏令时变化的影响。FAT 文件系统根据计算机的本地时间来存储时间值。
来源:文件时间
进一步阅读
解决方法
在某些情况下,你也许可以通过以下方式绕过此问题EXIF标签:
文件属性对话框可以显示底层文件系统支持的任何日期:
使用以下命令时命令行界面也是如此dir
:
01/01/1601 02:23 AM 0 1-oldest.txt
01/01/1970 02:23 AM 0 2-older.txt
01/01/1980 02:23 AM 0 3-old.txt
01/01/2014 02:23 AM 0 4-current.txt
01/01/2107 02:23 AM 0 5-new.txt
01/01/9999 02:23 AM 0 6-newer.txt
第三方程序如7-Zip也可能不受影响: