開始日と終了日をパラメーターとして使用するスクリプトを作成しています。真夜中になるまで開始日を時間単位で増やす必要があり、日付は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