
ファイル名から抽出された日付/時刻文字列があります。タイムスタンプはタイムゾーン A を使用して書き込まれたことがわかっているので、さらに処理するにはタイムゾーン B に変換する必要があります。これは bash で可能ですか?
例えば:
filenameTimestamp="2015-01-20 18:05:02"
timezoneA="Australia/Sydney"
timezoneB="Australia/Brisbane"
タイムゾーン A を使用して文字列を解析し、タイムゾーン B を使用して再度文字列に出力する必要があると思います。
答え1
シドニーの日付を米国ロサンゼルスの日付に解釈するには、次のようにします。
$ sec=$(TZ="Australia/Sydney" date +'%s' -d "2015-05-20 18:05:02")
$ TZ="America/Los_Angeles" date -d "@$sec"
Wed May 20 01:05:02 PDT 2015
ブリスベンの結果は次のとおりです。
$ TZ="Australia/Brisbane" date -d "@$sec"
Wed May 20 18:05:02 AEST 2015
使い方
TZ="Australia/Sydney" date +'%s' -d "2015-05-20 18:05:02"
これにより、タイムゾーンが一時的にシドニーに設定され、日付「2015-05-20 18:05:02」がエポック (UTC) からの秒数に変換されます。
sec=$(TZ="Australia/Sydney" date +'%s' -d "2015-05-20 18:05:02")
これにより、エポック (UTC) からの秒数がシェル変数に保存されます
sec
。TZ="America/Los_Angeles" date -d "@$sec"
これにより、タイムゾーンが一時的にロサンゼルスに設定され、 によって指定された日付が解釈されます
sec
。