Bash:
比较两个日期

如何:

# 比较日期:YYYY-MM-DD 格式
date1="2023-03-15"
date2="2023-04-01"

# 转换日期为秒
sec1=$(date -d "$date1" +%s)
sec2=$(date -d "$date2" +%s)

# 比较秒
if [ $sec1 -eq $sec2 ]; then
  echo "日期相等。"
elif [ $sec1 -lt $sec2 ]; then
  echo "date1 更早。"
else
  echo "date2 更早。"
fi

输出样例:

date1 更早。

深入探索

在早期 Unix 系统中,比较日期不是那么直截了当。你可能需要编写复杂的脚本,并手动解析日期。现在,date 命令简化了处理。除了使用 datebash 外,其他方法包括使用 awk 或 Perl 等工具。

日期比较具体实现细节值得注意的是,日期首先被转换为自 1970 年 1 月 1 日以来的秒数(Unix 时间戳)。这使得两个日期之间的比较仅需比较两个数字。

另外,有时你可以直接按照字符串比较日期,例如 YYYY-MM-DD 格式,因为它保证了字典序和日期顺序的一致性。但这只适用于已经格式化得当的日期。

另请参阅