我如何才能找到我的系统上当前有效的时区并获取其偏移量?
我需要这些信息来偏移一些时间计算,并且由于夏令时(实际上改变了偏移量),我无法使其保持不变。
例如,目前我的时区偏移量为 +02:00,冬季时区偏移量为 +01:00。我需要获取时区偏移量(以小时为单位)(例如,在这种情况下答案应为 2)。
我需要在 tcsh 或 bash 中执行此操作。
从命令行看来,时区未设置(日期“+%z”返回 0)。但是,从 Web 界面来看,时区设置为欧洲/萨格勒布。我希望获得该时区的偏移量。
FreeNAS 的版本是 0.7 RC1。
答案1
$ date "+%Z"
将为你提供当前时区
$ date "+%z"
将给出与 DST 的偏移量
答案2
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
答案3
FreeNAS 在 FreeBSD 上运行,因此使用http://www.cyberciti.biz/faq/howto-set-date-and-time-timezone-in-freebsd/作为指导:
FreeBSD 设置时区
要设置正确的时区,您需要将时区文件从 /usr/share/zoneinfo 目录复制到 /etc/localtime 文件。只需转到目录:
# cd /usr/share/zoneinfo
使用 ls -l 命令来找出您的区域文件。
# ls -l
例如我在亚洲/库尔卡塔(IST时区),所以我需要复制文件如下:
# cp /usr/share/zoneinfo/Asia/Calcutta /etc/localtime