Bash 脚本测试日期时间是过去吗?

Bash 脚本测试日期时间是过去吗?

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

相关内容