Date
快速計算日期差異
我經常想做一些快速的日期計算,例如:
- 這兩個日期有什麼區別?
- 在另一個日期之後n週的日期是什麼?
我通常打開日曆併計算天數,但我認為應該有一個程序/腳本可以用來進行這些計算。有什麼建議?
使用 GNU date(1) 可以輕鬆實現“日期後的 n 週”:
$ date -d 'now + 3 weeks' Tue Dec 6 23:58:04 EST 2011 $ date -d 'Aug 4 + 3 weeks' Thu Aug 25 00:00:00 EST 2011 $ date -d 'Jan 1 1982 + 11 weeks' Fri Mar 19 00:00:00 EST 1982
我不知道計算兩個日期之間差異的簡單方法,但是您可以使用 shell 函式圍繞 date(1) 包裝一些邏輯。
datediff() { d1=$(date -d "$1" +%s) d2=$(date -d "$2" +%s) echo $(( (d1 - d2) / 86400 )) days } $ datediff '1 Nov' '1 Aug' # Note: answer should be 92 days but in my timezone, DST starts between the dates. 91 days
交換
d1
,d2
如果您希望以另一種方式計算日期,或者變得更花哨以使其無關緊要。此外,如果在間隔中存在非 DST 到DST的過渡,則其中一天將只有 23 小時;您可以通過將 ½ 天添加到總和來補償。echo $(( (((d1-d2) > 0 ? (d1-d2) : (d2-d1)) + 43200) / 86400 )) days