如何发现当前的时区(FreeNAS shell)?

我怎样才能find哪个时区正在我的系统上生效,并得到抵消?

我需要这些信息来抵消一些时间计算,并且由于夏令时(这实际上改变了偏移量),我不能使它保持不变。

例如,目前我的时区偏移量为+02:00,冬季为+01:00。 我需要得到它是哪一个,并在几小时内抵消(例如,在这种情况下,答案应该是2)。

我需要在tcsh或bash中执行此操作。

从命令行看起来好像没有设置时区(date“+%z”返回0)。 然而,从networking界面的时区设置为欧洲/萨格勒布。 我想抵消那个时区。

FreeNAS的版本是0.7 RC1。

$ date "+%Z" 

会给你当前的时区

 $ date "+%z" 

将给出DST的偏移量

FreeNAS在FreeBSD上运行,所以使用http://www.cyberciti.biz/faq/howto-set-date-and-time-timezone-in-freebsd/作为指导:

FreeBSD的安装时区

要设置corrct时区,您需要将您的时区文件从/ usr / share / zoneinfo目录复制到/ etc / localtime文件。 刚转到目录:

 # cd /usr/share/zoneinfo 

使用ls -l命令查找您的zonefile。

 # ls -l 

例如我在亚洲/ Culcatta(IST时区),所以我需要复制文件如下:

 # cp /usr/share/zoneinfo/Asia/Calcutta /etc/localtime 
 get_current_timzone() { CURRENT_TIMEZONE="$(md5 /etc/localtime | awk '{print $4}')" find /usr/share/zoneinfo | while read LINE; do FOUND_TIMEZONE="$(md5 ${LINE} | awk '{print $4}')" if [ "${CURRENT_TIMEZONE}" == "${FOUND_TIMEZONE}" ]; then echo ${LINE} | sed -E 's|/usr/share/zoneinfo/||' fi done } root@Host-10 [~]$ get_current_timzone