你目前正处于脱机状态,正在等待 Internet 重新连接

从 NTFS 文件获取通用协调时间 (UTC)

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 158588
症状
夏令时的自动更正后, 监视程序比较当前时间/日期戳以不使用 Win32 API 调用直接 obtain/adjust Universal Coordinated Time (UTC) 向其中写入引用数据将错误地报告时间/日期更改的文件。 受此问题的程序可能包括版本控制软件、 数据库同步软件、 软件分发包、 备份软件不会写入 NTFS-意识等。
原因
当 Windows NT 自动调整为夏令时,时间/日期戳,对 NTFS 卷上的文件和 $ 事件,事件日志显示要移位一的小时,即使文件和事件记录最后一次创建/更改之前为夏令时调整中。

出现此行为是由于方式 Windows NT 存储时间/日期戳信息。在事件日志的事件和 NTFS 的文件中显示所有的时间/日期计算分区作为偏移量与 UTC (这是格林威治时间 [GMT] 相同)。当您从控件面板日期/时间小程序中选择您的时区时,您 UTC 设置值。然后添加相应的小时数或向/从存储的 UTC 值中减去。 调整此时间然后显示在任何报告本地时间 (也就是 NT 资源管理器 [NT 4.0]、 文件管理器、 目录列表等) 的操作。当选"自动调整为夏令时"是一个附加的小时将被添加到 GMT 夏令时 (通过十月最后一个星期日四月的第一个星期日) 的过程中。
解决方案
通过重写受影响的应用程序使用适当的 Win32 API 调用,可以纠正此问题。在 NTFS,Win32 API GetFileTime() 返回创建时间、 上次访问时间和上次写入指定文件的时间。返回该时间是在协调通用时间 (UTC)。这也是 NTFS 使用计算的本地时间/日期信息的时间。您可以使用 FileTimeToLocalFileTime() 将 UTC 文件时间转换为本地时间。但是,如果自动调整为夏令时,FileTimeToLocalFileTime() 将根据是否应调整当前日期为不根据是否应调整 GetFileTime API 调用返回日期的夏季节省时间的夏令时进行调整。
GetFileTime

警告:本文已自动翻译

属性

文章 ID:158588 - 上次审阅时间:02/26/2007 19:38:34 - 修订版本: 2.3

Microsoft Windows 2000 Server, Microsoft Windows 2000 Advanced Server, Microsoft Windows 2000 Professional Edition, Microsoft Windows NT Workstation 3.5, Microsoft Windows NT Workstation 3.51, Microsoft Windows NT Workstation 4.0 开发员版, Microsoft Windows NT Server 3.5, Microsoft Windows NT Server 3.51, Microsoft Windows NT Server 4.0 Standard Edition

  • kbmt kbprb kbprogramming KB158588 KbMtzh
反馈