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

Bash中如何从date日期对象减去指定小时数计算目标时间

计算前一个午夜往前推X小时的对应时间

直接用GNU date的多规则时间解析能力就能实现,不需要拆分步骤做二次计算。

可直接运行的实现

# 替换成你需要往前推的小时数即可
x=4
date -d "today 00:00 -${x} hours"

如果你要沿用之前获取午夜时间的写法,只需要在后面追加小时偏移规则就行:

x=4
date -d "yesterday 23:59:59 -${x} hours"

当x取值为4时,上述命令的输出和预期完全一致:

Mon Jul 10 20:00:00 CEST 2022

补充说明

  • date命令支持拼接多个时间描述规则,会自动按规则顺序完成时间偏移计算,不需要先单独取出午夜时间再做二次运算
  • 用today 00:00表示前一个午夜语义更清晰,和yesterday 23:59:59的解析结果完全一致,还能避免秒级精度带来的潜在误差
  • 如果需要调整偏移单位,把hours替换成minutes/days/seconds即可,数值前加负号代表往前推,不加代表往后算

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 04:27:18