日付/時刻を時間または分単位で増やします。

日付/時刻を時間または分単位で増やします。

開始日と終了日をパラメーターとして使用するスクリプトを作成しています。真夜中になるまで開始日を時間単位で増やす必要があり、日付は1ずつ増加します。開始日と終了日は数ヶ月にわたっている可能性があります。だから私の考えは日付機能を活用することですが、これを扱う投稿をたくさん見つけました。しかし、正しい結果が得られませんでした。たとえば、

$ date -d "1999-05-20 23:00:00 +10 min"
Thu, May 20, 1999  9:01:00 AM

$ date -d "1999-05-20 00:00:00 +1 hour"
Wed, May 19, 1999  8:00:00 PM

ご覧のとおり、戻り値はすべてオフになっています。何が間違っているのかよく分からない。また、返された日付/時刻の形式を次のように指定したかったのですが、成功しませんでした。

$ date -d "1998-12-31 23:00:00 +0.5 hour" +"%Y/%m/%d-%T"
date: invalid date ‘1998-12-31 23:00:00 +0.5 hour’

誰かが私のスクリプト擬似コードに興味があるなら:

 While Start_date != End_Date :
    Do some stuff here
    Start_date = Start_date + 1 hour

答え1

Stéphane Chazelasが指摘したように、時間の前に+記号があると、時間ではなく時間帯を表すため、問題が発生します。

だから代わりに:

$ date -d "1999-05-20 00:00:00 +1 hour"

これを使用してください:

$ date -d "1999-05-20 00:00:00 1 hour"

答え2

これは、デルタを追加する前にUbuntu 18.04で動作していたようです。

date -d "-10min 1999-05-20 23:00:00"
Do 20. Mai 22:50:00 CEST 1999

関連情報