linux - 计算 5 分钟上限
问题描述
操作系统:Red Hat Enterprise Linux Server 7.2(迈坡)
我想将时间四舍五入到最接近的 5 分钟,只向上,而不是向下,例如:
08:09:15 应该是 08:10:00
08:11:26 应该是 08:15:00
08:17:58 应该是 08:20:00
我一直在尝试:
(date -d @$(( (($(date +%s) + 150) / 300) * 300)) "+%H:%M:%S")
这将缩短时间但也会缩短(08:11:18 将导致 08:10:00 而不是 08:15:00)
知道我怎么能做到这一点吗?
解决方案
您可以使用此实用程序函数进行四舍五入:
roundDt() {
local n=300
local str="$1"
date -d @$(( ($(date -d "$str" '+%s') + $n)/$n * $n)) '+%H:%M:%S'
}
然后调用这个函数:
roundDt '08:09:15'
08:10:00
roundDt '08:11:26'
08:15:00
roundDt '08:17:58'
08:20:00
-x
要在导出后跟踪此函数如何计算使用(跟踪模式):
export -f roundDt
bash -cx "roundDt '08:11:26'"
+ roundDt 08:11:26
+ typeset n=300
+ typeset str=08:11:26
++ date -d 08:11:26 +%s
+ date -d @1535631300 +%H:%M:%S
08:15:00
推荐阅读
- python - 字符串转换为干净的 int 列表
- c# - IEnumerator 不等待几秒钟
- javascript - 模态对话框不适用于 bootstrap 4
- spring-boot - 如何在 redis hashOperations 中查询“范围”或“之间”?
- mfc - 部分控件不绘制,看似随意
- python - 如何使用 Bazel 构建 Python PEX?
- c - Linux内核类windows事件实现
- docker - 如何在 Docker 中复制文件?
- sql - 在 PL/SQL Developer 上禁用执行过程的自动提交
- java - 如何在java中将多个文件合并到另一个新文件中?