我正在编写一个 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