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

标签 linux unix time unix-timestamp epoch

我正在寻找将十六进制时间格式转换为 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 )

关于linux - 如何将时间戳从十六进制格式转换为 EPOCH 时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33809097/

相关文章:

linux - ssh:连接到主机 X.X.X.X 端口 22:连接超时

date - 当前年份和月份中的天数

linux - linux下多线程epoll的一个问题

linux - Perl:在继续之前等待 xdg-open 退出

python - Linux。 Heroku-Django。 Collectstatic 只读文件系统

linux - 基于字符串字段的 if 语句

linux - Linux 上的 inotifywait 是否允许在超时期限内收集事件?

bash - 查找 - 抑制 "No such file or directory"错误

c++ - OpenGL库的实现

R:四舍五入到最近的小时