如何将十六进制 TimeDateStamp DWORD 值转换为人类可读格式?

How to convert a hex TimeDateStamp DWORD value into human readable format?

谁能解释如何将十六进制 TimeDateStamp DWORD 值转换为人类可读格式?

我很好奇像 0x62444DB4 这样的值是如何转换成 “2022 年 3 月 30 日,星期三 10:31:48 下午”

我当然试过谷歌搜索,但找不到任何解释。但是有在线转换器可用。

但我只是想为自己转换这些值。

您的值为 32 位时间戳。

您的日期时间值为 32 位 Unix 时间戳:自 1/1/1970 以来的秒数。
参见 https://unixtime.org/

在大多数编程语言中,您可以直接使用十六进制表示法。
实施不应由一个人单独完成,因为其中涉及大量工程。闰年,甚至闰秒、时区、夏令时、UTC……所有这些在使用时间戳时都需要解决。
我在下面添加了我的粗略计算作为演示。一定要使用现有的包或库来处理时间戳。

请参阅下面的 JavaScript 代码进行演示。
我将您的值乘以 1000,因为 JavaScript 以毫秒计算。但除此之外,这同样适用于其他系统。

let timestamp = 0x62444DB4;
let dateTime = new Date(timestamp * 1000);
console.log('Timestamp in seconds:', timestamp);
console.log('Human-Readable:', dateTime.toDateString() + ' ' + dateTime.toTimeString());

// Rough output, just for the time.
// Year month and day get really messy with timezones, leap years, etc.
let hours = Math.floor(timestamp/3600) % 24;
let minutes = Math.floor(timestamp/60) % 60;
let seconds = Math.floor(timestamp) % 60;
console.log('Using our own time calculation:', hours + ':' + minutes + ':' + seconds);