我正在为WIM files(长篇故事)编写一个包装库,但我在编码的日期方面遇到了困难。格式为:
[creationtime] => Array
(
[highpart] => 0x01CA0446
[lowpart] => 0x8E44DCAF
)
此格式位于WIM文件XML中。 我已经尝试了我能想到的每种日期解码技术! 任何想法将不胜感激。 我唯一需要做的就是与Long Integers和WIN32 DateTime相关的事情......但到目前为止还没有运气。
答案 0 :(得分:1)
liCreationTime
在WIM规范中定义为LARGE_INTEGER
(我从MS下载)
在我看来,它与QueryPerformanceCounter
返回的时间戳类似(如果不相同) - 值得庆幸的是,这非常简单!
我使用计算器和命令行PHP完成了这项工作,您必须自己实现代码。
将您的高低部分转换为单个64位值。
0x01CA04468E44DCAF - > 128920240414579887
除以100000000
1289202404
将其用作date()
php -r "var_dump(date('Y-m-d H:i:s', 1289202404));"
string(19) "2010-11-08 07:46:44"
修改强>
或许我很幸运。
如果它是1601年以来的纳秒数,正如其他答案似乎表明的那样,你可以使用略有不同的计算。
php -r "var_dump(date('Y-m-d H:i:s', (128920240414579887/100000000)-41651963));"
string(19) "2009-07-14 05:47:21"
答案 1 :(得分:0)
我认为它们可能与c / c ++ FILETIME结构有关
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724284(v=vs.85).aspx