Linux系统时区设置
UTC、GMT、CST、DST以及Unix时间戳
UTC - 时间标准时间
全球通用的时间标准,是一堆大佬根据原子钟和地球自转计算出来的。
GMT - 格林威治时间
规定太阳每天经过位于英国伦敦郊区的皇家格林威治天文台的时间为中午12点。
GMT是前世界标准时,UTC是现世界标准时。UTC以原子时计时所以比GMT更精确,但是日常生活中精确到秒的情况下,二者可以视为相同
CST - Central Standard Time
可同时代表4个时区:美国中部、澳大利亚、中国和古巴。
Central Standard Time (USA) UT-6:00 |
DST - 夏令时
为了节约能源,提高日光利用率,夏季太阳升起较早人为将时间调快一个小时,夏令时切换当天一天只有23个小时,同时冬令时切换当天,一天有25个小时
Unix时间戳
UNIX时间戳是UTC时间,从1970年01月01日00时00分00秒到现在的总秒数,与时区无关。
Linux时间函数
精确到秒
struct tm{ |
精确到毫秒
|
/* |
设置时区
规定地理位置相对于GMT以西为+,以东为-,东八区:GMT-8。
TZ环境变量取值规则
参考该文章即可:
- TZ取值规则
当TZ取值为时区名时,对应的zoneinfo文件必须存在,如果zoneinfo不在默认路径,可以使用TZDIR
环境变量配置
设置方法
- 通过设置环境变量
export TZ=GMT-8
- 通过文件
etc/TZ
echo "Asia/Shanghai" > /etc/TZ
注意:环境变量优先于文件 - 进程内部设置
int setenv(const char *name, const char *value, int overwrite); //设置环境变量,仅对当前进程有效 setenv("TZ","GMT-8",1); - zoneinfo
Linux系统中的时区信息存储在/etc/localtime
文件中,该文件是一个符号链接,指向实际的时区文件。这些时区文件通常位于usr/share/zoneinfo
目录下,每个时区对应一个文件,文件名以所在地区的缩写命名,如Asia/Shanghai
表示美国纽约时区。zoneinfo
是linx系统中用于管理时区信息的数据库.它包含了世界上各个时区的详细信息,包括时区名称、夏令时规则等。当系统启动时,它会读取/etc/localtime文件来获取当前系统的时区设置,然后根据这个设置去Zoneinfo数据库中查找对应的时区信息。
Linux C设置时区
该方法仅对当前程序生效
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 L.S.W!
评论