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

Bash脚本日期递增异常:未增日期却逐小时递减问题排查

问题分析与解决

错误原因

  1. 输出格式颠倒:你在date命令的输出格式中使用了%Y-%d-%m,这是「年-日-月」的顺序,但输入时间戳是标准的「年-月-日」格式,导致计算后的日期被错误显示(比如6月4日会被输出为4月6日)。
  2. 增量参数解析异常:部分date版本对+$i day的单数写法支持不佳,或者需要在+与数字间添加空格,导致实际未正确添加天数,反而因解析错误出现小时递减的问题。

修正后的脚本

#!/bin/bash

TIME_STAMP="2023-06-03 06:21:33"

for i in {1..5}
do
    NEXT_DATE=$(date "+%Y-%m-%d %H:%M:%S" -d "$TIME_STAMP + $i days")
    echo "$NEXT_DATE"
done

正确输出

2023-06-04 06:21:33
2023-06-05 06:21:33
2023-06-06 06:21:33
2023-06-07 06:21:33
2023-06-08 06:21:33

更简洁的实现

如果使用GNU date(Linux默认),可以直接循环生成后续日期,无需手动维护计数器:

#!/bin/bash

START="2023-06-03 06:21:33"
for i in {0..4}; do
    date -d "$START + $i days" +"%Y-%m-%d %H:%M:%S"
done

跨平台兼容写法(适用于macOS/BSD)

如果是BSD系的date(比如macOS),语法有差异,需使用-v参数调整日期:

#!/bin/bash

TIME_STAMP="2023-06-03 06:21:33"
for i in {1..5}
do
    NEXT_DATE=$(date -j -v "+${i}d" -f "%Y-%m-%d %H:%M:%S" "$TIME_STAMP" +"%Y-%m-%d %H:%M:%S")
    echo "$NEXT_DATE"
done

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:53:13