首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP转换WIM日期格式

PHP转换WIM日期格式
EN

Stack Overflow用户
提问于 2012-09-14 15:07:30
回答 2查看 374关注 0票数 1

我正在为WIM files编写一个包装器库(长篇大论),但我在处理其中编码的日期时遇到了困难。格式为:

代码语言:javascript
复制
[creationtime] => Array
                        (
                            [highpart] => 0x01CA0446
                            [lowpart] => 0x8E44DCAF
                        )

此格式位于WIM文件XML中。我已经尝试了我能想到的每一种日期解码技术!任何想法都将不胜感激。我唯一要做的就是与长整数和WIN32 DateTime相关的东西……但到目前为止还没什么好结果。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-14 15:27:31

在WIM规范中,liCreationTime被定义为LARGE_INTEGER (我是从微软下载的)

在我看来,这将与QueryPerformanceCounter返回的时间戳相似(如果不是相同的话)--谢天谢地,这让事情变得非常简单!

我使用计算器和命令行PHP实现了这一点,您必须自己实现代码。

把你的高和低部分转换成一个64位的值。

0x01CA04468E44DCAF -> 128920240414579887

除以100000000

1289202404

将其用作date()的输入

代码语言:javascript
复制
php -r "var_dump(date('Y-m-d H:i:s', 1289202404));"
string(19) "2010-11-08 07:46:44"

编辑:

或许我只是走运而已。

如果它是自1601年以来的纳秒数,正如其他答案所表明的那样,您可以使用略有不同的计算方法。

代码语言:javascript
复制
php -r "var_dump(date('Y-m-d H:i:s', (128920240414579887/100000000)-41651963));"
string(19) "2009-07-14 05:47:21"
票数 1
EN

Stack Overflow用户

发布于 2012-09-14 15:26:28

我相信它们可能与c/c++ FILETIME结构有关

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724284(v=vs.85).aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12419677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档