0
typedef struct _FILETIME {
  DWORD dwLowDateTime;
  DWORD dwHighDateTime;
} FILETIME, *PFILETIME;

低日期时间和高数据时间存储的时间部分是什么?以及它将如何存储在计算机中以及如何以 64 位整数显示。

例如,如果我有2012-06-18 09:45:03.180.

我必须减去两个文件时间,所以我要转换为 int64 和 subsracting,这是正确的方法吗?

4

4 回答 4

1

dwHighDateTime合在一起dwLowDateTime形成一个 64 位值,表示自 1601 年 1 月 1 日凌晨 12:00 UTC 以来 100 纳秒单位的数量。

您永远不应该直接读取或写入 FILETIME 结构中的值。您应该使用FileTimeToSystemTime等函数来访问其中的值。

于 2012-06-18T10:46:44.533 回答
0

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:

  • 0x779C70C0 (low)
  • 0x01CCFEA2 (high)

Edit: converting to __int64 and subtracting, just as you say, works well.

于 2012-06-18T10:56:22.233 回答
0

这里的结构有很好的记录。摘抄:

FILETIME 结构是一个 64 位值,表示自 1601 年 1 月 1 日 (UTC) 以来 100 纳秒间隔的数量。

这两个 DWORD 用于定义结构,因为您不应该自己进行计算。请参阅参考的 MSDN 文章中的备注部分。

于 2012-06-18T10:46:38.987 回答
0

文件时间结构

包含一个 64 位值,表示自 1601 年 1 月 1 日 (UTC) 以来的 100 纳秒间隔数。

有关示例,请参见SystemTimeToFileTime 函数

于 2012-06-18T10:46:40.913 回答