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

How to convert timestamp from Hexadecimal format to EPOCH timestamp?

我正在寻找 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。 如有不妥请指正

根据您的描述(期望 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 )