私のコードは開始時刻を使用し、その開始時刻で異なる日付/時刻変数を定義します。このように:
shour=$(date -d "yesterday 3PM" -u)
dd=$(date "+%d" -d "$shour" -u)
sdate=$(date "+%Y%m%d" -d "$shour" -u)
これは返されます。
date: invalid date 'Thu 16 Jan 15:00:00 UTC 2020'
date: invalid date 'Thu 16 Jan 15:00:00 UTC 2020'
このため私の髪を引っ張ってください!
答え1
date
デフォルト出力を読み取れません。Thu 16 Jan 15:00:00 UTC 2020
date
再処理する出力は、date
フォーマット文字列を使用して出力フォーマットを指定する必要があります'+%F %T'
。
答え2
今年はランキングが問題になると思います。失敗しても:
host:~ # date -d 'Thu 16 Jan 15:00:00 UTC 2020'
date: invalid date ‘Thu 16 Jan 15:00:00 UTC 2020
これは私の仮想マシンで動作します。
host:~ # date -d 'Thu 16 Jan 2020 15:00:00 UTC'
Thu Jan 16 16:00:00 CET 2020
最初の文に日付形式を追加しましたが、これはうまくいくようです。
shour=$(date "+%Y%m%d" -d "yesterday 3PM" -u)
ddate="$(date -d "${shour}" -u)"
sdate=$(date "+%Y%m%d" -d "$shour" -u)
答え3
試してみるためdate
のオプション-R
:
-R, --rfc-email output date and time in RFC 5322 format. Example: Mon, 14 Aug 2006 02:34:56 -0600
date -d "yesterday 3PM" -R
Thu, 16 Jan 2020 15:00:00 +0100
date -d "$(date -d "yesterday 3PM" -R)" +%s
1579183200