及时更新 tzdata 库,避免跨时区时间处理问题
引言
今天在校验一个前端传过来的一个非洲国家的时间点时,本地调试的时候是正常校验通过的,部署到服务器上之后就校验不通过了,感觉很奇怪。所以查看了下使用的一个关键的函数源代码,发现加载时区时,会使用到 Time Zone Database (参考之前的文章《IANA Time Zone Database 和 ZONEINFO 详解》)中的数据,以 Golang 为例,如下加载时区函数会使用到 Time Zone Database 中的数据:
time.LoadLocation("Africa/Cairo")
Linux 系统中, Time Zone Database 的位置是 /usr/share/zoneinfo。
tzdata 是什么?
tzdata 软件包全称是 time zone and daylight-saving time(DST) data,供各个Linux系统安装以读取 Time Zone Database 中数据。Time Zone Database 简称 tz 或 tzinfo,是一组表示地球上各地的时间历史的代码和数据,目前由 IANA 维护。
tzdata 在不同的平台上可能会有不同的实现方式,通常是在 zoneinfo 文件夹下面,其中包含所有时区的信息文件。在Linux系统中,这个文件夹通常位于 /usr/share/zoneinfo。
通过使用tzdata,应用程序和操作系统可以根据你所在的位置和所选的设置来自动切换时区。这对于跨越不同时区的国际企业和全球性应用程序来说是至关重要的。
更新 tzdata
因为 Time Zone Database 会随着地球上国家或地区的时区更改而更新,所以服务器上的 Time Zone Database 也要保持升级到最新版本。
以 Debian/Ubuntu 为例,首先设置为非交互式,按照默认方式安装就即可:
export DEBIAN_FRONTEND=noninteractive
更新下载源
apt-get update
安装或者更新 tzdata
apt-get install -y tzdata
顺便介绍下设置时区的方式,将时区设置为东八区,执行如下命令即可:
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
更多推荐
所有评论(0)