最近遇到一个跟服务器时区相关的问题,没准备充分,当问题真正来临时,很懵。
特别是在生产环境中,系统时区是特别重要的存在,很多应用在默认情况下,都是取的系统时区,如果时区处理不得当的话,可能会造成不必要的困扰。
时区的概念
关于时区,有以下几个标准:
- CST:北美中部标准时间
- UTC:协调世界时,又称世界标准时间,简称UTC,从英文国际时间/法文协调时间”Universal Time/Temps Cordonné”而来。中国大陆、香港、澳门、台湾、蒙古国、新加坡、马来西亚、菲律宾、澳洲西部的时间与UTC的时差均为+8,也就是UTC+8。
- GMT:格林尼治标准时间(旧译格林威治平均时间或格林威治标准时间;英语:Greenwich Mean Time,GMT)是指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。
Linux 的时间分为两种:
- 硬件时间:由 BIOS(或CMOS)所负责。
- 系统时间:由 Linux 所负责,系统时间在系统开关机后读取硬件时间后,再由 Linux 管理时间。
date
date命令是显示或设置系统时间与日期。
这个是最简单、最直观获取系统时间与日期的方式了。
1 | $ date |
显示所在时区:
1 | date +"%Z %z" |
注意
+
和"
之间没有空格,否则会报表。
date 命令常见参数:
1 | %H 小时,24小时制(00~23) |
timedatectl
timedatectl 命令非常的方便,当你不带任何参数运行它时,这条命令可以像下图一样,输出系统时间概览,其中包含当前时区:
1 | $ timedatectl |
只查看时区:
1 | $ timedatectl | grep "Time zone" |
/etc/timezone
使用 cat 命令显示文件 /etc/timezone
的内容,来查看时区:
1 | $ cat /etc/timezone |
选择时区
1 | $ tzselect |
选择完成之后,将时区相关的配置,写入.profit
配置文件中。
然后使用 souce 命令,强制生效。
1 | souce .profit |