我正在嘗試使用 UNIX 轉換來自不同時區的日期date(我使用的是 Ubuntu 20.04)。
使用當前日期,它運行良好:
$ date
dim. 12 déc. 2021 11:59:16 CET
$ TZ=Pacific/Tahiti date
dim. 12 déc. 2021 00:59:32 -10
但是當我使用字串時,它失敗了:
$ export testdate="2021/10/28 17:47:26"
$ date -d "$test"
jeu. 28 oct. 2021 17:47:26 CEST
$ TZ=Pacific/Tahiti date -d "$test"
jeu. 28 oct. 2021 17:47:26 -10
正如我所期待的:
jeu 28 oct. 2021 05:47:26 -10
我不明白為什么我沒有得到適當的轉變。當然,如果我嘗試使用日期也應該更改的日期和時間,它也不起作用:
$ export test="2021/10/28 7:47:26"
$ date -d "$test"
jeu. 28 oct. 2021 07:47:26 CEST
$ TZ=Pacific/Tahiti date -d "$test" " %F %T %Z"
2021-10-28 07:47:26 -10
雖然我期待:
mer 27 oct. 2021 19:47:26 -10
uj5u.com熱心網友回復:
為什么我沒有得到適當的轉變
test="2021/10/28 17:47:26"
是未知時區的日期。沒有人知道它在哪個時區,白天是什么。GNU date 試圖“猜測”您的意思是什么偏移量,它通常遍歷當前時區的 TZ 資料庫,并只選擇匹配的第一個偏移量。此外,指定時區不足以知道它是什么日光,您必須具體。
此外,由于夏令時,您可以及時“回傳”,即使您知道時區,現在也知道與 UTC 的偏移量是多少。
此外,您不必匯出它 - 日期不關心test環境變數。
使用不同的時區轉換日期
date
如果輸入是 UTC,請告訴日期。
$ LC_ALL=C TZ=Pacific/Tahiti date -d "2021/10/28 17:47:26 UTC"
Thu Oct 28 07:47:26 -10 2021
如果輸入帶有任何其他偏移量,請告訴日期。
$ LC_ALL=C TZ=Pacific/Tahiti date -d "2021/10/28 17:47:26 CEST"
Thu Oct 28 05:47:26 -10 2021
輸入格式的 GNU 日期決議通常是一個謎。檔案將2004-02-29 16:21:42格式列為示例輸入,因此我推薦使用該格式。如果你想準確,我推薦strptime來自dateutils(或真正的編程語言)。
uj5u.com熱心網友回復:
一種簡單的方法是先將時間轉換為紀元時間:
test="2021/10/28 17:47:26"
TZ=Pacific/Tahiti date -d @$(date -d "$test" %s)
date -d "$test" %s 將本地時間轉換為紀元時間。
TZ=Pacific/Tahiti date -d @$(date -d "$test" %s) 從紀元時間列印大溪地時間。
uj5u.com熱心網友回復:
我并不完全有信心,但我的印象是您正在查看以下語法:
LC_TIME="es_ES.UTF8" TZ="America/New_York" date --date='TZ="Europe/Amsterdam" 2021/10/28 17:47:26' " %A %F %T %B"
這需要一個預定義的日期時間(解釋為本地Amsterdam時間),New York在同一時刻將日期時間(基于時差)調整為-time;然后它會用西班牙語名稱列印月份/作業日的結果(前提是您的系統上存在該語言的區域設定)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/379697.html
