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

Linux下如何将date()命令输出时间向下取整到最近15分钟间隔

原代码问题原因

  • 调用了两次date命令,如果两次调用的间隙刚好跨了分钟、小时甚至天,会出现前后时间不匹配的异常
  • 算术运算输出的分钟数是数字类型,小于10时不会自动补前导零,因此每小时1-14分钟区间会输出0而非预期的00

修复方案

方案1:最小改动修复补零问题

仅在原代码基础上用printf格式化补前导零即可,改动最小:

printf "%s%02d\n" "$(date +'%Y/%m/%d/%H/')" $(( $(date +%M) / 15 * 15 ))

其中%02d表示输出2位数字,不足2位时自动在前面补0。

方案2:更可靠的时间戳取整实现(推荐)

通过时间戳取整的方式仅调用1次date即可实现,完全避免两次取时间不一致的问题,代码也更简洁:

适用GNU Date(绝大多数Linux发行版)

date +'%Y/%m/%d/%H/%M' -d "@$(( $(date +%s) / 900 * 900 ))"

适用BSD Date(macOS/BSD系统)

date -r $(( $(date +%s) / 900 * 900 )) +'%Y/%m/%d/%H/%M'

实现逻辑:15分钟对应900秒,先将当前时间转换为秒级时间戳,对900做整数除法后再乘900,就能得到最近的向下对齐15分钟的时间戳,再格式化输出即可,天然自带分钟补零效果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:36:04