计算机的几种时间格式

本文介绍了Win32中三种时间格式:FILETIME、SYSTEMTIME和MS-DOS格式,以及它们之间的转换。FILETIME是64位结构,表示从1601年开始的100纳秒间隔。SYSTEMTIME则包含详细日期和时间信息。在处理时,需要注意FILETIME默认为格林尼治标准时间,需通过FileTimeToLocalFileTime修正为本地时间。另外,文中还提到了MS-DOS格式和PE文件中的TimeDateStamp时间戳。转换方法包括使用FileTimeToDosDateTime和LongDtToFileTime函数。
摘要由CSDN通过智能技术生成

找到的一篇关于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总是为格林尼治时间&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值