首页 > 解决方案 > 如何从unix中的当前时间减去60分钟

问题描述

我目前正在创建一个 shell 脚本,它将每小时运行一次 python 代码,用于收集、处理和显示前一小时雷达的数据。

我正在使用的 python 代码需要格式为“YYYYMMDDHHmm”的 UTC 开始时间和结束时间。到目前为止,我发现使用 unix 命令 date -u +"%Y%m%d%H%M" 会以正确的格式检索我的当前时间,但我还没有找到减去 60 分钟的方法从第一次开始并让它输出“开始”时间/

我试过的代码:

date +"%Y%m%d%H%M-60"  >> out: 201908201833-60

now= date -u +"%Y%m%d%H%M"  >> out:201908201834

echo "$now - 60"  >> out: - 60

我刚刚开始自学/学习 shell 编码,而且我对 python 编码更满意,这就是为什么我的尝试设置得更像你用 python 编写的方式。我确信有一种方法可以存储变量并让它从结束时间减去 60,但我无法找到一个好的在线资源(无论是在这里还是通过谷歌)。

标签: bashshellunix

解决方案


您可以使用-d选项date

date -u +"%Y%m%d%H%M" -d '-60 minutes'

或者减去 1 小时而不是 60 分钟:

date -u +"%Y%m%d%H%M" -d '-1 hour'

为了能够在变量中捕获此值,请使用命令替换

now=$(date -u +"%Y%m%d%H%M" -d '-1 hour')

在 OSX (BSD) 上,-d不支持使用此日期命令:

now=$(date -u -v-1H +"%Y%m%d%H%M")

推荐阅读