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

在Bash中给指定日期时间加24小时结果异常,求解决方法

Bash日期时间计算异常问题及解决方法

我尝试在Bash中给一个日期时间字符串添加24小时,但得到的结果异常。

以下命令执行正常:

$ date +"%Y-%m-%d %H:%M:%S" -d "2016-01-01 21:00:00"
2016-01-01 21:00:00

但尝试增加时间后,结果完全错误:

$ date +"%Y-%m-%d %H:%M:%S" -d "2016-01-01 21:00:00 + 1 day"
2016-01-02 20:00:00  <- 预期结果:2016-01-02 21:00:00

$ date +"%Y-%m-%d %H:%M:%S" -d "2016-01-01 21:00:00 + 24 hours"
2015-12-31 22:00:00  <- 预期结果:2016-01-02 21:00:00

$ date +"%Y-%m-%d %H:%M:%S" -d "2016-01-01 21:00:00 + 5 mins"
2016-01-01 16:01:00  <- 预期结果:2016-01-01 21:05:00

我的命令哪里出错了?

--- 更新信息 ---

当前时区设置如下:

$ timedatectl
               Local time: Mon 2022-12-26 23:58:14 WET
           Universal time: Mon 2022-12-26 23:58:14 UTC
                 RTC time: Mon 2022-12-26 23:58:14
                Time zone: Atlantic/Canary (WET, +0000)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no


$ cat /etc/timezone
Atlantic/Canary

--- 解决方案 ---

感谢帮助,我找到了正确的命令。

  • 解决方案1:
    在日期时间字符串末尾添加时区信息"Z"即可解决问题

    date +"%Y-%m-%d %H:%M:%S" -d "2016-01-01 21:00:00Z + 24 hours"
    
  • 解决方案2:
    将日期时间字符串转换为时间戳,添加24小时对应的秒数后,再转换回字符串格式

    date -d "@$(($(date "+%s") + 60 * 60 * 24))" +"%Y-%m-%d %H:%M:%S"
    

内容的提问来源于stack exchange,提问作者zappee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 13:45:30