VC ++中的文件时间结构

时间:2012-06-18 10:33:33

标签: c++ winapi

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

在低日期时间和高数据时间内存储了多长时间?以及它将如何存储在计算机中以及如何以64位整数显示。

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

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

4 个答案:

答案 0 :(得分:0)

该结构已有详细记录here。摘录:

  

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

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

答案 1 :(得分:0)

FILETIME structure

  

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

有关示例,请参阅SystemTimeToFileTime function

答案 2 :(得分:0)

dwHighDateTimedwLowDateTime形成一个64位值,表示自1601年1月1日UTC时间上午12:00以来100纳秒单位的数量。

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

答案 3 :(得分:0)

根据MSDNFILETIME是自1601年1月1日(UTC)以来100纳秒间隔的数量。因此,在您的示例中,大约需要150183天,9小时,45分钟,3秒和180,000,它们应该是:

  • 0x779C70C0(低)
  • 0x01CCFEA2(高)

修改转换为__int64并按照您的说法减去效果正常。