typedef struct _FILETIME {
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME, *PFILETIME;
低日期时间和高数据时间存储的时间部分是什么?以及它将如何存储在计算机中以及如何以 64 位整数显示。
例如,如果我有2012-06-18 09:45:03.180
.
我必须减去两个文件时间,所以我要转换为 int64 和 subsracting,这是正确的方法吗?
dwHighDateTime
合在一起dwLowDateTime
形成一个 64 位值,表示自 1601 年 1 月 1 日凌晨 12:00 UTC 以来 100 纳秒单位的数量。
您永远不应该直接读取或写入 FILETIME 结构中的值。您应该使用FileTimeToSystemTime等函数来访问其中的值。
According to MSDN, FILETIME
is the number of 100-nanosecond intervals since January 1, 1601 (UTC). So in your example, which is approximately 150183 days, 9 hours, 45 minutes, 3 seconds and 180 thousands, they should be about:
Edit: converting to __int64
and subtracting, just as you say, works well.
这里的结构有很好的记录。摘抄:
FILETIME 结构是一个 64 位值,表示自 1601 年 1 月 1 日 (UTC) 以来 100 纳秒间隔的数量。
这两个 DWORD 用于定义结构,因为您不应该自己进行计算。请参阅参考的 MSDN 文章中的备注部分。