Windows Hotfixes 中的时间格式 01d15614cbaee92c 是什么样的?

Windows Hotfixes 中的时间格式 01d15614cbaee92c 是什么样的?

Windows Hotfixes 的时间戳 ( InstalledOn) 格式并不规律,它显示各种类型,如MM-DD-YYYY、、和。YYYY/MM/DDYYYYMMDD01d15614cbaee92c

Win32_QuickFixEngineering这些值可以从中获得WMIC

我想知道时间戳是什么样的01d15614cbaee92c以及如何解析它。

示例数据:

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

谢谢。

答案1

我会尝试一下。

我认为十六进制值是文件时间s,以 64 位十六进制表示。

文件时间是

一个 64 位值,表示自 1601 年 1 月 1 日 (UTC) 以来 100 纳秒间隔的数量

微软将这些 100 纳秒单位称为蜱虫

下面是一个 JavaScript 函数,它将其中一个字符串转换为 JavaScript 日期,然后你可以格式以任何你想要的方式。在示例中,控制台日志将显示日期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

答案2

哎呀。这不是解决方案。抱歉我的错误。

  1. 转换01d15614cbaee92c为十进制:130980511487027500
  2. 删除最后 5 位数字:(1309805114870另请参阅:https://stackoverflow.com/questions/35765637/convert-hexadecimal-value-to-timestamp-date-and-time
  3. 除以 1,000 并向上舍入:1309805115
  4. 转换为 unix(epoch) 时间:1309805115相当于07/04/2011 @ 6:45pm(UTC)、2011-07-04T18:45:15+00:00(ISO 8601)

但是,KB3109094它是在 2015 年 12 月 5 日发布的,不可能有 2011 年 7 月 4 日的时间戳。(感谢@Ramhound)

相关内容