比较shell脚本中的两个日期

时间:2015-03-27 22:08:51

标签: shell date variables

我需要比较存储在两个变量中的两个日期,格式为YYYY-MM-DD。我想我可以将它们存储在另一个变量中并使用一些tr -d "-",然后比较整数,但我不知道如何。提前谢谢!

2 个答案:

答案 0 :(得分:3)

您可能需要呼叫expr,具体取决于您的神秘外壳:

d1="2015-03-31" d2="2015-04-01"
if [ "$d1" = "$d2" ]; then
    echo "same day"
elif expr "$d1" "<" "$d2" >/dev/null; then
    echo "d1 is earlier than d2"
else
    echo "d1 is later than d2"
fi
d1 is earlier than d2

test命令(或它的别名[)仅实现字符串相等和不等操作符。当你给(非bash)shell这个命令时:

[ "$d1" > "$d2" ]

> "$d2"部分被视为stdout重定向。名为(在本例中)的零长度文件&#34; 2015-04-01&#34;已创建,条件命令变为

[ "$d1" ]

并且由于变量非空,因此评估为成功状态。

文件大小为零,因为[命令不生成标准输出。

答案 1 :(得分:1)

您可以使用date +%s -d your_date来获取自称为“epoch”的固定实例(1970-01-01,00:00 UTC)以来的秒数。一旦你得到它,几乎任何有约会的东西都很容易。还有一些选项可以将数字转换回日期。