2010-05-13 22 views
7

有沒有辦法從linux shell腳本中獲得來自GMT的給定時區(標識符如EDT或America/New_York)的偏移量?從linux shell腳本中格林尼治時間偏移給定時區

+0

你究竟給出了什麼? – 2010-05-13 01:02:27

+0

時區的字符串標識符。例如America/New_York或EDT。 – dutch 2010-05-13 01:04:34

+0

如果你想從本地時間計算它的可能性。但從一個非標準的字符串,似乎有點具有挑戰性。 – Nix 2010-05-13 01:34:55

回答

12

導出您的TZ環境變量並打印日期,時區偏移爲%z。

#!/bin/sh 
export TZ=":Pacific/Auckland" 
date +%z 
+6

或者如果您不想破壞當前的環境:'TZ =「:太平洋/奧克蘭」日期+%z' – 2010-05-13 02:16:29

+0

我們在時區之前不需要冒號 – 2016-07-21 01:51:36

+0

這是否考慮到夏令時? – 2018-01-11 10:50:12

2

這是一種迂迴的方式來做到這一點,但它的工作原理(loosely based on this):

#!/bin/bash 
ZONE=$1 
TIME=$(date +%s --utc -d "12:00:00 $ZONE") 
UTC_TIME=$(date +%s --utc -d "12:00:00") 
((DIFF=UTC_TIME-TIME)) 
echo - | awk -v SECS=$DIFF '{printf "%d",SECS/(60*60)}' 

保存,作爲tzoffset,使其可執行,像這樣運行它:

tzoffset PST 

此腳本以其當前形式僅處理縮短的時區。

相關問題