我需要比较存储在两个变量中的两个日期,格式为YYYY-MM-DD
。我想我可以将它们存储在另一个变量中并使用一些tr -d "-"
,然后比较整数,但我不知道如何。提前谢谢!
答案 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)以来的秒数。一旦你得到它,几乎任何有约会的东西都很容易。还有一些选项可以将数字转换回日期。