Windowsホットフィックスのタイムスタンプ(InstalledOn
)形式は規則的ではなく、MM-DD-YYYY
、YYYY/MM/DD
、YYYYMMDD
、01d15614cbaee92c
などのさまざまなタイプが表示されます。
これらの値は、WMIC
のWin32_QuickFixEngineering
から取得できます。
01d15614cbaee92c
のようなタイムスタンプとは何か、そしてそれを解析する方法を知りたいのですが。
データ例:
Update KB955484 10cd4bf3009a2541
Update KB971512 01cd35e8c07bdeb1
Security Update KB2079403 01cd04587fa78c94
Security Update KB3109094 01d15614cbaee92c
ありがとうございました。
これを刺します。
16進値は [〜#〜] filetime [〜#〜] s、64ビットの16進表現だと思います。
ファイル時間は
1601年1月1日(UTC)以降の100ナノ秒間隔の数を表す64ビット値
Microsoftは、これらの100ナノ秒単位を ticks と呼びます。
これらの文字列の1つをJavaScriptの日付に変換するJavaScript関数を次に示します。これにより、任意の方法で format を実行できます。この例では、コンソールログに日付が ISO 8601形式 で表示されます。
const getDateFromHexTicks = hex => {
const ticks = BigInt(`0x${hex}`);
const ticksPerMs = BigInt(1e4);
const ms = ticks / ticksPerMs;
const fileTimeEpochOffset = BigInt(new Date('1601-01-01T00:00:00.000Z').getTime());
const unixTime = Number(ms + fileTimeEpochOffset);
const date = new Date(unixTime);
return date;
};
const date = getDateFromHexTicks('01d15614cbaee92c');
console.log(date.toISOString()); // 2016-01-23T19:32:28.702Z
サンプルデータの最後の行を参照します。
Security Update KB3109094 01d15614cbaee92c
このアップデートが2016-01-23T19:32:28.702Z
にインストールされたことを示します
おっと。それは解決策ではありません。すみません、私の間違いです。
01d15614cbaee92c
を10進数に変換します:130980511487027500
1309805114870
(参照: https://stackoverflow.com/questions/35765637/convert-hexadecimal-value-to-timestamp-date-and-time )1309805115
1309805115
は07/04/2011 @ 6:45pm
(UTC)、2011-07-04T18:45:15+00:00
(ISO 8601)と同等ですただし、KB3109094
は2015年12月5日にリリースされ、2011年7月4日のタイムスタンプを持つことはできません。(ありがとう、@ Ramhound)