bash - 比较 bash 中以 YYYY-MM-DDTHH:MM:SSZ 格式给出的两次时间
问题描述
给出两次说 2021-06-25T04:04:28Z 和 2021-06-18T19:36:31Z 其中第一次表示 2021 年 6 月 26 日凌晨 4:04(+28 秒),第二次表示 2021 年 6 月 18 日晚上 7:36(+31 秒)。我想编写一个 bash 脚本来比较这两次,并可以告诉我这两个事件是否相隔不到 20 分钟。是否有一个函数可以做到这一点,或者我必须尝试解析它然后以这种方式进行比较。因此,对于上述输入,我想回显“时间不在 20 分钟内”
谢谢!
解决方案
该date
命令可以解析和转换日期/时间数据。
$: a=$( date --date="2021-06-18T19:36:31Z" +%s )
$: b=$( date --date="2021-06-25T04:04:28Z" +%s )
自 70 年 1 月 1 日以来,%s
格式以秒为单位输出结果。
$: echo $a $b
1624044991 1624593868
所以你可以用它做简单的整数数学。
$: secs=$(( b - a ))
$: secs=${secs#-} # get the absolute value
$: if (( secs < ( 20 * 60 ) )); then echo "within 20m"; else echo ">20m"; fi
>20m
推荐阅读
- php - Laravel 中的 make 控制器命令的“--resource”是什么意思?
- python - 如何在还包含整数的列表中找到最小的子列表
- c++ - poco 库,静态链接 (MT)
- whatsapp - 我可以将 WhatsApp 视频聊天功能集成到我的 react.js 应用程序中吗?
- python - 如何摆脱我的左手算法的while循环
- javascript - 当 React 已经使用 react-hotkeys-hook 呈现错误时无法刷新更新
- ansible - 循环嵌套的 ansible dict
- c# - 写入操作不会更新 xamarin 表单中 iOS 的特征值
- android-studio - Room 无法验证数据完整性和空数据崩溃
- docusignapi - 是否有其他 API 可以使用 Docusign CLM 中的预定义模板创建协议?