
我有一個從文件名中提取的日期/時間字串。我知道時間戳記是使用時區 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) 以來的時間(以秒為單位)保存到 shell 變數中
sec
。TZ="America/Los_Angeles" date -d "@$sec"
這會暫時將時區設為洛杉磯並解釋 給出的日期
sec
。