bash - 如何从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,但我无法找到一个好的在线资源(无论是在这里还是通过谷歌)。
解决方案
您可以使用-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")
推荐阅读
- android - 根据在同一类中单击的按钮更改文本内容
- kotlin - Kotlin 解构超过五个组件
- django - 在不使用重定向的情况下提交表单后更改 url
- python - 在 Telebot 中开发的机器人在私人消息中工作,而不是在群组中工作
- reactjs - React 页面刷新中的条件渲染仅在 Ctrl + F5 时发生
- mysql - 使用 MySQL 5.7 for MySQL Aurora 在不同区域之间快速迁移 RDS
- javascript - 使用 JavaScript 的字符串填充中心
- python - 使用 google colab 读取 Google 驱动文件时出现输入/输出错误
- telegram - 如何在不使用 /getUpdates 的情况下知道 Telegram 上群组的聊天 ID?
- java - 如何在 LinkedList 上正确同步?