不同类型时间戳
时间戳的伟大在有很多选项.有时,在调试(或阅读不完整文档)时,你会找到时间戳,并想知道如何把它转换为可读的内容.这里有一些提示.
使用2002年11月26日Pst下午7:25作为采样时间.
UNIX时间戳自1970年1月1日UTC以来按秒数的32位数字,是唯一常用的32位数字的时间戳.
2002年11月26日pst7: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位数字的间隔.
2002年11月26日晚上7:25PST=0x01C295C4:91150E00.
如果它是以"01"和1个字母开头的64位值,则可能是Win32的FILETIME."01A"时代始于1972年,"01F"时代结束于2057年.
若要转换这些值为可读值,可在GetDateFormat()和GetTimeFormat()函数后用FileTimeToSystemTime()函数.
3:CLRSystem.DateTime
警告:.NET内容(对不起).CLR的System.DateTime值为UTC1年1月1日以来的按100纳秒的64位数字的间隔.不常用.
2002年11月26日pst7:25p=0x08C462CB:FCED3800.(?有人检查数学)
如果以"08"和字母开头的64位值,则可能是CLR的System.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秒.).用本地时间记录这些值.
2002年11月26日pst7:25p=0x2D7A9B20.
若要转换这些值为可读值,请通过DosDateTimeToFileTime转换其为FILETIME,然后再转换FILETIME为可读内容.
5:OLE自动化日期格式
OLE自动化日期格式是个计算自1899年12月30日午夜以来的天数的浮点值.按小数天表示小时和分钟.
在这些格式之间转换
一般两种格式之间没有直接转换;必须通过一些中间格式.
往返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,则还有更多可用转换.
其他时间格式
JScript的Date对象构造器,可从表示自1970年以来的毫秒的整数构造.除了乘以1000外,与UNIX时间相同.
浙公网安备 33010602011771号