我怎样才能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/作为指导:
要设置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