[英]Converting date in a different timezone with `date`
我正在嘗試使用 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
我並不完全有信心,但我覺得您正在查看以下語法:
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
時間; 然后它會打印帶有西班牙名稱的月份/工作日的結果(前提是您的系統上存在該語言的區域設置)。
一種簡單的方法是先將時間轉換為紀元時間:
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)
從紀元時間打印大溪地時間。
為什么我沒有得到正確的轉變
test="2021/10/28 17:47:26"
是未知時區的日期。 沒有人知道它在哪個時區,什么是白天。 GNU date 嘗試“猜測”您的意思是什么時區,它通常遍歷 TZ 數據庫以獲取當前時區,並選擇第一個匹配的偏移量。 此外,指定時區不足以知道它是什么日光,您必須具體。
此外,您不必導出它 - date 不關心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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.