簡體   English   中英

在UNIX時間戳Shell / Bash中使用時區轉換日期

[英]Converting date with timezone in UNIX timestamp Shell/Bash

我需要將日期格式為“ yyyy / mm / dd hh:mm:ss TZ”的字符串轉換為UNIX時間(TZ =時區)。

到目前為止,我所做的是通過使用以下命令將日期格式轉換為“ yyyy / mm / dd hh:mm:ss”(不帶時區)

dateYMD="2019/2/28 12:23:11.46"
newt=$(date -d "${dateYMD}" +"%s")
echo ${newt}

我得到以下結果。

1551349391

我的工作是尋找時區和日期/時間都可以如何轉換為時間戳(unix時間)。 例如,我需要4個變量,它們的日期/時間與dateYMD相同,但是在4個不同的時區中,以便它們的時間戳不同。

這是我嘗試過的最新

dateYMD="2017/09/09 08:58:09"
timez=$(TZ=Australia/Sydney date -d @$(date +%s -d "${dateYMD}"))
unixTimez=$( date --date "${timez}" +"%s" )
echo ${unixTimez}

告訴我以下錯誤

   date: invalid date ‘чт фев 28 21:23:11 AEDT 2019’

您不需要兩次致電date 只需將TZ設置為該變量所需的時區即可調用一次。

timesydney=$(TZ=Australia/Sydney date -d "$dateYMD" +%s)
timenyc=$(TZ=US/Eastern date -d "$dateYMD" +%s)

您可以通過設置TZ=環境變量來做到這一點(請參閱Barmar的答案),或者將時區包括在時間字符串中。 它的優先級高於TZ =。

例子:

TZ=UTC date -d '2019-01-01 12:00 CET' +'%s, %F %T %Z %z'
TZ=CET date -d '2019-01-01 12:00 CET' +'%s, %F %T %Z %z'
TZ=UTC date -d '2019-01-01 12:00 PDT' +'%s, %F %T %Z %z'
TZ=CET date -d '2019-01-01 12:00 PDT' +'%s, %F %T %Z %z'
TZ=UTC date -d '2019-01-01 12:00 +500' +'%s, %F %T %Z %z'

將打印

1546340400, 2019-01-01 11:00:00 UTC +0000
1546340400, 2019-01-01 12:00:00 CET +0100
1546369200, 2019-01-01 19:00:00 UTC +0000
1546369200, 2019-01-01 20:00:00 CET +0100
1546326000, 2019-01-01 07:00:00 UTC +0000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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