找到的一篇关于Win系统时间的文章不错,作者原来是Depends 工具的编写者。
注意:
本文大部分翻译自Matt Pietrek 在1997年2月MSJ上的Under The Hood专栏。
链接:http://www.microsoft.com/msj/0297/hood/hood0297.aspx
一.FILETIME和SYSTEMTIME格式
我遇到的第一种时间格式是在使用函数GetFileTime时返回的FILETIME,这是一个64位(8字节)结构。在SDK文档中,关于这个结构是这样描述的“FILETIME结构的64位值,表示从1601年1月1日开始的以100纳秒(一纳秒为十亿分之一秒)为间隔的值”。我不知道你——反正我的朋友和亲戚——在听到“100纳秒”时头都大了。
不过还好,Win32的另一种时间格式消除了这个问题,这个格式就是SYSTEMTIME。它是一个包含有年、月、日、小时、分、秒、微秒这些成员的结构,而且还有一个API函数FileTimeToSystemTime专门用来将FILETIEM格式转化成SYSTEMTIME格式。当然,假如你要知道是否为闰年、闰纪等这样的问题就只好自己手工转换了。
每次运行使用GetFileTime和FileTimeToSystemTime函数的代码,我总是发现得出的时间比正确的时间少几个小时。为什么呢?思来想去,我终于明白了:在安装WINDOWS NT和95时,我曾经告诉系统我住在什么地区。而在win32下,FILETIME总是为格林尼治时间&