Fish Shell:
比较两个日期

How to: 如何操作

# 设置日期
set date1 (date -d '2022-03-14' +%s) 
set date2 (date -d '2023-03-14' +%s) 

# 比较日期
if test $date1 -lt $date2
    echo "date1 is earlier than date2"
else if test $date1 -eq $date2
    echo "date1 is the same as date2"
else
    echo "date1 is later than date2"
end

输出样例:

date1 is earlier than date2

Deep Dive 深度剖析

在早期的Shell编程中,比较日期并不直观。Unix timestamp(1970年1月1日以来的秒数)给我们提供了一种方法,可以轻松比较两个日期,因为每一个时间点都对应唯一的数字。date +%s 命令可以转换日期为 Unix timestamp。

Fish Shell与传统Bash有所不同,在语法和内建命令方面更加现代化,但比较日期的逻辑保持一致。使用date命令配合Fish Shell的test内建命令,就可以直观地比较日期。

万一Fish Shell不满足要求,你还可以考虑其他Shell脚本语言,比如Bash或者Zsh。或者对于更复杂的日期逻辑,可能需要脚本外部的工具或者编程语言,如Python的datetime模块。

See Also 参考链接