You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash中时间字符串与Unix秒数互转结果异常的问题排查

Bash中时间字符串与Unix秒数互转结果异常的问题排查

嘿,兄弟,我一眼就瞅出你这命令哪里踩坑了😎!

先给你捋明白:你第一步把时间转成Unix秒数的操作完全没问题:

$ dt=$(date '+%s' -u --date="2024-11-25 20:31:00")
$ echo $dt
1732566660

这个1732566660确实是对应2024-11-25 20:31:00的正确Unix时间戳(就是从1970年元旦零点UTC开始算的秒数)。

但你转回去的时候用了--date="$dt seconds",这就犯了个典型的语法误解!date命令看到这种写法,会把它当成当前系统时间加上$dt这么多秒——这可不就算出几十年后的离谱时间了嘛!

正确的打开方式是:当你要把Unix秒数转成时间字符串时,必须用@前缀把秒数包起来,告诉date“这是个Unix时间戳,直接解析它”,命令改成这样:

$ date '+%F %T' -u --date="@$dt"
2024-11-25 20:31:00

你再跑一遍试试,结果肯定和你最初的时间完全对上!

顺便补个小提醒:如果是要给某个时间做偏移(比如给2024-11-25加30秒),那写法是--date="2024-11-25 20:31:00 +30 seconds";要是基于当前时间偏移,就用--date="+1 hour"这种格式,别和Unix时间戳的写法搞混啦!

备注:内容来源于stack exchange,提问作者Andreas G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 11:47:59