GNU/Linux >> Linux の 問題 >  >> Linux

日付の違いをすばやく計算しますか?

次のような簡単な日付計算をしたいことがよくあります:

  • これら2つの日付の違いは何ですか?
  • 日付は何ですかn この他の日付から数週間後?

普段はカレンダーを開いて日数を数えていますが、こういう計算に使えるプログラム・スクリプトが必要だと思います。何か提案はありますか?

承認された回答:

「日付からn週間後」は、GNU date(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つの日付の差を計算する簡単な方法はわかりませんが、シェル関数を使用して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への移行がある場合、1日の長さはわずか23時間になります。合計に半日を追加することで補償できます。

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

Linux
  1. awkを使用して文字の頻度を計算します

  2. パスワードポリシーの管理

  3. 日付:コマンドが見つかりません

  1. find を使用して、180 日以上経過したファイルごとに使用済みディスク容量の合計を計算する

  2. bashで日付から日数を引く

  3. Linux runasdate アナログ

  1. Linux での date コマンドの例

  2. Bash での日付比較

  3. 日付に X 日を追加して新しい日付を取得するにはどうすればよいですか?