1

私はWIM ファイル(長い話) のラッパー ライブラリを作成していますが、それにエンコードされた日付に問題がありました。形式は次のとおりです。

[creationtime] => Array
                        (
                            [highpart] => 0x01CA0446
                            [lowpart] => 0x8E44DCAF
                        )

この形式は、WIM ファイル XML 内にあります。考えられるすべての日付デコード手法を試しました! どんなアイデアでも大歓迎です。私が続けなければならないことは、Long Integers と WIN32 DateTime に関連することだけです...しかし、今のところうまくいきません。

4

2 に答える 2

1

liCreationTimeLARGE_INTEGERWIM仕様のように定義されています(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"
于 2012-09-14T07:27:30.947 に答える
0

私はそれらがc/c++ FILETIME構造と関係があるかもしれないと信じています

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

于 2012-09-14T07:26:28.230 に答える