我有 Windows 7 Professional,有自动更新功能(所以应该已经应用了所有补丁)。我位于 EST/EDT 时区(纽约)。控制面板时间框已选中“使用 DST”。DST 刚刚在周日“向前推进”。我尝试应用去年 8 月的补丁(KB2863058),它说已经安装。
在命令提示符(DOS 命令行)框中,“dir”给出了我刚刚更新的文件以及两个月前(标准时间)更新的文件的正确时间。屏幕右下角的时钟给出了正确的时间。但是,Windows 资源管理器给出了上次在标准时间修改的文件的一个小时前的时间。
例如,
dir C:\Users\Phil\Desktop\content
给我
01/24/2014 12:36 PM 4,524 ContentList.txt
当 Windows 资源管理器桌面 > 内容显示
ContentList.txt 1/24/2014 11:36 AM Text Document
它差了一个小时,好像没有应用 DST。这是一个已知的 Windows 错误吗?我还没有看到任何关于它的报告。由于“dir”和 WinExp 对刚刚修改的文件一致,我认为是 WinExp 出了问题。我使用 Perl 的 -M $filename(带 $^T)来获取文件的使用年限(以天数表示),手动计算使用年限会得出比 WinExp 晚两个小时的时间(上例中的 13:36)。我假设 1 小时是 DST 造成的,但其他时间呢?
总而言之,对于同一个文件(最后修改时间为标准时间):
Windows Explorer 11:36 AM
Command Prompt 12:36 PM
Perl -M operator 1:36 PM
对于今天修改的文件,所有三个时间都一致。谁对谁错?我认为显示时间的各种方式应该就是否应用 DST 达成一致。
答案1
这似乎是命令提示符DIR
结果的一个错误,而不是 Windows 资源管理器的一个错误。
复制起来非常容易:
- 将时钟调回夏令时开始之前,例如 3 月 1 日。
- 创建或修改文件。
- 检查时钟的时间,然后检查 Windows 资源管理器中的文件时间
DIR
。 - 将您的时钟调回今天的正确时间。
- 再次检查文件时间。您将看到 Windows 资源管理器保留了正确的时间,但
DIR
显示的时间提前了一个小时。
在 NTFS 上,文件时间均以 UTC 格式存储,因此该命令似乎DIR
采用了当前的在将文件时间从 UTC 转换为本地时间时,应考虑日期的 DST。它应该使用文件的做出该决定的时间。