日付差をすばやく計算

日付差をすばやく計算

私はしばしば次のようないくつかの高速日付計算を実行したいと思います。

  • これら2つの日付の違いは何ですか?
  • 今日の日付はいつですか?N他のデートから何週間かかりましたか?

私は通常、カレンダーを開いて日付を数えるのに、この種の計算を実行するために使用できるプログラム/スクリプトが必要だと思いました。どんな提案がありますか?

ベストアンサー1

「日付からn週間」は、GNU日付(1)を使用して簡単に計算できます。

$ 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

2つの日付間の差を計算する簡単な方法はわかりませんが、シェル関数を使用して日付(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

別の方法で日付を計算するには、を変更または派手にしd1d2関連性がないようにします。また、夏時間が適用されない場合夏時間間隔が切り替わると、1日の1日の長さは23時間に過ぎません。合計時間に1/2日を追加することで補償できます。

echo $(( (((d1-d2) > 0 ? (d1-d2) : (d2-d1)) + 43200) / 86400 )) days

おすすめ記事