shell - 如何获取日期/时间字符串和当前时间之间的差异?
问题描述
我在 shell 脚本变量中有一个日期时间。如何将它与当前时间戳进行比较,并找出 shell 脚本中这两个日期之间的差异分钟数?
我在 shell 脚本中拥有的变量的值类似于08/16/2019 15:34:00
.
解决方案
要获得当前时间减去提供的时间戳的差值(使用 GNUdate
和 Bash 5.0 或更高版本),您可以使用EPOCHSECONDS
shell 变量和以下-d
选项date
:
$ echo $(((EPOCHSECONDS - $(date -d '08/16/2019 15:34:00' +%s)) / 60))
19
对于早于 5.0 的 Bash,您可以使用printf '%(%s)T'
代替EPOCHSECONDS
:
echo $((($(printf '%(%s)T') - $(date -d '08/16/2019 15:34:00' +%s)) / 60))
如果你的 Bash 早于 4.2(或任何 POSIX shell),你必须使用date
两次:
echo $((($(date +%s) - $(date -d '08/16/2019 15:34:00' +%s)) / 60))
如果您没有 GNUdate
及其选项,请查看Parse Date in Bash-d
中的问答 :使用 解析日期/时间字符串,或在 macOS 上使用's标志。read
date
-jf
推荐阅读
- ruby-on-rails - Rails 5.2模式未打开
- nuxt.js - 仅使用客户端在 Nuxt 中包装复杂的动态内容会更好吗?
- java - 拆分字符串,然后显示该拆分的一部分(姓氏部分)
- mysql - MySQL | 查找列内所有不同的字符串
- datastage - 选择合适的工具来替换 IBM DataStage ETL 工具
- c - 未初始化和内存错误(字符串和指针)
- mysql - 多个过滤器 SQL
- r - 在不更改页面大小/分辨率的情况下使用 RSelenium 缩小网站
- django - 我在 Django 中的自定义登录表单尝试创建一个新用户,而不是让用户登录
- performance - 在同一台机器下加载测试应用程序的最佳方法