时间戳的伟大在有很多选项.有时,在调试(或阅读不完整文档)时,你会找到时间戳,并想知道如何把它转换可读的内容.这里有一些提示.
使用20021126Pst下午7:25作为采样时间.

UNIX时间戳自1970年1月1日UTC以来按秒数的32位数字,是唯一常用的32位数字的时间戳.

20021126pst7:25p=0x3DE43B0C.
如果是以"3"开头的32位值,则可能是UNIX时间.("3"时代始于1995年,结束于2004年).
要转换这些值为可读值,有多种选择.

c运行时

C运行时的time_t值与UNIX时间戳相同,因此可用ctime()函数.
这是C运行时窗口NT事件日志使用的时间格式.

2:Win32的FILETIME.

Win32文件时间值为,自1600年1月1日UTC以来至今按100纳秒计算的64位数字的间隔.
20021126日晚上7:25PST=0x01C295C4:91150E00.
如果它是以"01"和1个字母开头的64位值,则可能是Win32FILETIME."01A"时代始于1972年,"01F"时代结束于2057年.
若要转换这些值为可读值,可在GetDateFormat()和GetTimeFormat()函数后用FileTimeToSystemTime()函数.

3:CLRSystem.DateTime

警告:.NET内容(对不起).CLRSystem.DateTime值为UTC1年1月1日以来的按100纳秒的64位数字的间隔.不常用.
20021126pst7:25p=0x08C462CB:FCED3800.(?有人检查数学)
如果以"08"和字母开头的64位值,则可能是CLRSystem.DateTime."08A"始于1970年,"08F"时代结束于2056年.
若要转换这些值为可读值,请构造按构造或参数传递64位时间值的System.DateTime对象.

4:DOS日期或时间格式

DOS日期/时间格式位掩码:
|Y|Y|Y|Y|Y|Y|Y|M| |M|M|M|D|D|D|D|D| |h|h|h|h|h|m|m|m| |m|m|m|s|s|s|s|s|

1980年的偏移存储年份.秒按两秒为增量存储.(因此,如果"秒"值为15,则它表示30秒.).用本地时间记录这些值.
20021126pst7:25p=0x2D7A9B20.

若要转换这些值为可读值,请通过DosDateTimeToFileTime转换其为FILETIME,然后再转换FILETIME可读内容.

5:OLE自动化日期格式

OLE自动化日期格式是个计算自18991230日午夜以来的天数的浮点值.按小数天表示小时和分钟.

在这些格式之间转换

一般两种格式之间没有直接转换;必须通过一些中间格式.
往返Win32文件时间的UNIX时间戳

文件时间到/从系统时间

使用FileTimeToSystemTime()SystemTimeToFileTime().

FILETIME到或从System.DateTime

使用System.DateTime.FromFileTime()System.DateTime.ToFileTime().

OLE与System.DateTime相互转换

使用System.DateTime.FromOADate()System.DateTime.ToOADate().

DOS日期或时间到或从文件时间

使用DosDateTimeToFileTime()FileTimeToDosDateTime().

DOS日期/时间与系统时间

自己解析.

系统时间到或从OLE日期开始.

使用SystemTimeToVariantTime()VariantTimeToSystemTime(),或使用VarDateFromUdate()VarUdateFromDate().

DOS日期/时间到/从OLE日期开始.

使用DosDateTimeToVariantTime()VariantTimeToDosDateTime().
如果允许使用MFC,则还有更多可用转换.

其他时间格式

JScriptDate对象构造器,可从表示自1970年以来的毫秒的整数构造.除了乘以1000外,与UNIX时间相同.