簡體   English   中英

使用“日期”轉換不同時區的日期

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM