日付:別のタイムゾーンの文字列の日付-dが無効です。

日付:別のタイムゾーンの文字列の日付-dが無効です。

サーバーは東部タイムゾーンに設定されています。私の仕事のいくつかはそのタイムゾーンに関連し、いくつかはオーストラリア/アデレードのタイムゾーンに関連しています。

$ DATE=`date`
$ echo $DATE
Mon Mon Jun 4 15:15:47 EDT 2018
$ DATE_Adelaide=`TZ=Australia/Adelaide date -d "$DATE"`
$ echo $DATE_Adelaide
Tue Jun 5 04:45:47 ACST 2018
$ dayName=$(date -d "${DATE_Adelaide}" +%a)
date: invalid date `Tue Jun 5 04:45:47 ACST 2018'

ベストアンサー1

ISO8601の日付/時刻形式を汎用転送形式として使用してGNU日付を想定すると、次のようになります。

$ date_local=$(date --iso-8601=seconds)
$ echo "$date_local"
2018-06-04T17:01:45-04:00

$ date_adelaide=$(TZ=Australia/Adelaide date -d "$date_local" --iso-8601=seconds)
$ echo "$date_adelaide"
2018-06-05T06:31:45+09:30

$ day_name_local=$(date -d "$date_adelaide" +%a)
$ echo $day_name_local
Mon

$ day_name_adelaide=$(TZ=Australia/Adelaide date -d "$date_adelaide" +%a)
$ echo $day_name_adelaide
Tue

おすすめ記事