如何将时间戳从十六进制格式转换为 EPOCH 时间戳?

Posted

技术标签:

【中文标题】如何将时间戳从十六进制格式转换为 EPOCH 时间戳?【英文标题】:How to convert timestamp from Hexadecimal format to EPOCH timestamp? 【发布时间】:2016-02-21 21:40:03 【问题描述】:

我正在寻找一个将十六进制时间格式转换为 Linux 时间戳的 Linux 命令。我试过这个命令:

date "+%Y-%m-%d %H:%M:%S ( %s )" --date="@$(printf "%d\n" 0xd6979880)"
output >> 2084-02-01 11:00:00 ( 3600259200 )

但是好像错了,0xd6979880的epoch输出应该是1391270400。 如果我错了,请纠正我。

【问题讨论】:

【参考方案1】:

根据您的描述(期望 1391270400 而不是 3600259200),您的十六进制日期似乎是自 1900-01-01 以来的秒数,而不是 POSIX 时间戳(自 1970-01-01 以来的秒数)。幸运的是,修正这个偏移很容易,只需减去 70 年:

$ date '+%F %T ( %s )' --date="$(date -d @$(printf "%d" 0xd6979880)) - 70 years"
2014-02-01 16:00:00 ( 1391270400 )

【讨论】:

以上是关于如何将时间戳从十六进制格式转换为 EPOCH 时间戳?的主要内容,如果未能解决你的问题,请参考以下文章

使用 sql 查询将元数据库中的预配置时间戳从 utc 格式转换为 ist

如何使用颤振将时间戳从 Firebase 转换为 DateTime

将 Epoch 时间戳转换为 sql server(人类可读格式)

Python:如何将日期时间/时间戳从一个时区转换为另一个时区?

在Android中将Epoch时间转换为日期并将日期转换为Epoch时间[重复]

如何将 13 位 unix 纪元时间格式转换为日期时间?