Aur*_*ura 16 c++ windows utc filetime
我正在创建一个模拟对象来测试我的应用程序,以便它在边界条件下工作.我FILETIME
在Windows SDK中使用.
该链接显示这是1601年1月1日(我假设午夜00:00:00两者的最早时间dwLowDateTime
和dwHighDateTime
有0x00000000
),所以我有.什么是最新的FILETIME?
我的第一直觉是设置dwLowDateTime
并dwHighDateTime
到0xFFFFFFFF
,后来我质疑,如果这确实是一个有效的时间,我需要测试,因为在我的链接页面说,SetFileTime
函数使用0xFFFFFFFF
指定文件的以前的读取时间应予以保留.
hon*_*onk 20
我的理解是,它FILETIME
代表任何有效SYSTEMTIME
的64位.如果你采取的限制SYSTEMTIME
(在30827一毫秒),那么你最终获得FILETIME
的0x7fff35f4f06c58f0
使用SystemTimeToFileTime()
.
但是,如果你把0x7fffffffffffffff
进入FileTimeToSystemTime()
,那么你将在今年30828结束了,虽然这个日期是无效的SYSTEMTIME
.任何较大的值(0x8000000000000000
及以上)都会导致FileTimeToSystemTime()
失败.
总而言之,我建议不要超越0x7fff35f4f06c58f0
以保持兼容SYSTEMTIME
.
根据链接,FILETIME 代表:
...自1601 年 1 月 1 日(UTC)以来 100 纳秒间隔的数量。
所以不是 1970 年 1 月 1 日。
它还说
...SetFileTime 函数[例如]使用 0xFFFFFFFF 来指定应保留文件的先前访问时间。
所以我认为您不会期望 0xFFFFFFFF 是有效的最大值。
根据专利 6853957,范围是纪元(1601 年 1 月 1 日)前后 30,000 年。这意味着您也可以将其与负日期(即纪元之前的日期)一起使用。
编辑:刚刚计算:它可以存储(大约)58,454 天的 100 纳秒间隔,所以 +/- 30,000 年听起来是一个不错的值,当然,如果您接受负日期。
归档时间: |
|
查看次数: |
6225 次 |
最近记录: |