gpt4 book ai didi

bash - Linux : How to round off the date() to nearest interval

转载 作者:行者123 更新时间:2023-12-02 01:54:00 25 4
gpt4 key购买 nike

我想将分钟四舍五入到最接近的 15 分钟间隔,即 00、15、30、45。我目前正在执行以下操作:

echo $(date +'%Y/%m/%d/%H/')$((($(($(date +'%M') / 15))-0)*15))

但在一小时开始的 1-14 分钟之间,我得到“/2021/11/03/21/0”而不是 00。

此外,我不确定这是否是最好的方法。还有其他选择吗?

最佳答案

请您尝试以下操作:

mod=$(( 10#$(date +%M) \% 15 ))
date -d "-${mod} minutes" +%Y/%m/%d/%H/%M
  • 变量 mod 保存分钟除以 15 的余数。
  • 然后减去 mod,向下舍入到最接近的 15 分钟间隔。

[编辑]
crontab 的联机帮助页显示:

Percent-signs (%) in the command, unlessescaped with backslash (), will be changed into newlinecharacters, and all data after the first % will be sent tothe command as standard input.

如果要在crontab内执行命令,请将命令修改为:

mod=$(( 10#$(date +\%M) \% 15 ))
date -d "-${mod} minutes" +\%Y/\%m/\%d/\%H/\%M

[编辑2]
如果您想将代码嵌入到 crontab 文件中,请添加如下行:

0 12 * * * username bash -c 'mod=$(( 10#$(date +\%M) \% 15 )); DATEVAR=$(date -d "-${mod} minutes" +\%Y/\%m/\%d/\%H/\%M); write.sh "$DATEVAR"'
  • 请相应修改执行时间/日期和用户名。
  • 执行 crontab 命令的默认 shell 可能是 /bin/sh。然后,您需要显式地将其切换到 /bin/bash 来执行 bash 命令。
  • 很抱歉,我在上一篇文章中缺少 % 15(模运算)前面的反斜杠。

关于bash - Linux : How to round off the date() to nearest interval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69834449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com