![Bash 脚本测试日期时间是过去吗?](https://linux22.com/image/178614/Bash%20%E8%84%9A%E6%9C%AC%E6%B5%8B%E8%AF%95%E6%97%A5%E6%9C%9F%E6%97%B6%E9%97%B4%E6%98%AF%E8%BF%87%E5%8E%BB%E5%90%97%EF%BC%9F.png)
我正在编写一个 bash shell 脚本,其参数之一是日期时间。检查该日期是否是过去(或过去的某个时间(例如“这至少是 3 天前?”))的最佳方法是什么。
bash v4、Ubuntu Linux 18.04+、来自apt-get
.
答案1
使用 GNU date
(Ubuntu 上的实现)解析自然(英语)语言日期/时间规范(以及更多)的能力及其-d
扩展。该+%s
格式将日期转换为自纪元以来的秒数,您可以轻松进行比较。
#!/bin/bash
date='2020-08-12T16:00:10'
epoch=$(date -d "$date" +%s)
if [ "$epoch" -lt "$(date -d '3 days ago' +%s)" ] ; then
echo At least 3 days ago
else
echo Too recent
fi