2010-05-13 23 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 

此脚本以其当前形式仅处理缩短的时区。

相关问题