web-dev-qa-db-ja.com

Windowsホットフィックスの01d15614cbaee92cのような時間形式は何ですか?

Windowsホットフィックスのタイムスタンプ(InstalledOn)形式は規則的ではなく、MM-DD-YYYYYYYY/MM/DDYYYYMMDD01d15614cbaee92cなどのさまざまなタイプが表示されます。

これらの値は、WMICWin32_QuickFixEngineeringから取得できます。

01d15614cbaee92cのようなタイムスタンプとは何か、そしてそれを解析する方法を知りたいのですが。

データ例:

Update KB955484 10cd4bf3009a2541
Update KB971512 01cd35e8c07bdeb1
Security Update KB2079403 01cd04587fa78c94
Security Update KB3109094 01d15614cbaee92c

ありがとうございました。

2
user115930

これを刺します。

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にインストールされたことを示します

1
jsejcksn

おっと。それは解決策ではありません。すみません、私の間違いです。

  1. 01d15614cbaee92cを10進数に変換します:130980511487027500
  2. 最後の5つの数字を削除します:1309805114870(参照: https://stackoverflow.com/questions/35765637/convert-hexadecimal-value-to-timestamp-date-and-time
  3. 1,000で割り、切り上げます:1309805115
  4. uNIX(Epoch)時間に変換:130980511507/04/2011 @ 6:45pm(UTC)、2011-07-04T18:45:15+00:00(ISO 8601)と同等です

ただし、KB3109094は2015年12月5日にリリースされ、2011年7月4日のタイムスタンプを持つことはできません。(ありがとう、@ Ramhound)

1
user115930