我们Linux下查看时间最基础的命令可能是 date

date常见用法:

  1. # date
  2. Sun Mar 20 15:58:01 CST 2021
  3. 定义输出时间的格式:
  4. # date "+%Y-%m-%d %H:%M:%S"
  5. 2021-07-20 15:56:34
  6. 更多格式变量可以通过 date --help 来获取

-d 选项可以用来进行时间运算

  1. # date "+%D"
  2. 03/20/22
  3. # date "+%D" -d "-100 month"
  4. 11/20/13

-s 选项可以设置系统时间,接受多种形式

  1. # date -s "20220101 10:10:10"
  2. Sat Jan 1 10:10:10 CST 2022
  3. # date -s "2022-01-01 11:11:11"
  4. Sat Jan 1 11:11:11 CST 2022
  5. # date -s "2022/01/01 12:12:12"
  6. Sat Jan 1 12:12:12 CST 2022
  7. # date -s "13:13:13 20220302"
  8. Wed Mar 2 13:13:13 CST 2022
  9. # date -s "20220320"
  10. Sun Mar 20 00:00:00 CST 2022

date -s 命令修改的是系统时间,默认不保存到硬件时钟,如果需要,使用hwclock命令同步:
hwclock -w :同步系统时间到硬件时钟
hwclock -s : 同步硬件时间到系统时间

必须掌握的命令:timedatectl
输出

  1. # timedatectl
  2. Local time: Sun 2022-03-20 16:23:26 CST
  3. Universal time: Sun 2022-03-20 08:23:26 UTC
  4. RTC time: Sun 2022-03-20 08:23:26
  5. Time zone: Asia/Shanghai (CST, +0800)
  6. NTP enabled: yes
  7. NTP synchronized: no
  8. RTC in local TZ: no
  9. DST active: n/a

以下几个概念必须搞清楚:
RTC(Real Time Clock)时钟芯片,它其实就是硬件时钟
Universal time 协调世界时(UTC),通常与格林尼治时间(GMT)视作等同
Time zone, 时区,
Local time,本地时间 = UTC + Time zone,如 16:23:26 CST(中国标准时间) = 08:23:26 UTC + 8
NTP enabled,网络时间同步服务是否开启
NTP synchronized,是否已经和网络时间同步过
RTC in local TZ :RTC 时钟是否使用本地时间,no为不使用本地时间,一般与UTC相同;yes为使用本地时间,与Local time相同。
DST active, 是否开启夏令时,中国在1986年实施过夏令时,1992年起停止实施(太复杂)。对于实施夏令时的地区,Linux 系统会自动按当地时区情况进行调整,不需要人为干预,只须确定时区正确。

timedatectl 常用命令:

列出所有的时区
timedatectl list-timezones

设置时区:
timedatectl set-timezone Asia/Shanghai

常见问题:由于 Windows 和 Linux 时钟算法区别,如上 RTC in local TZ 如果设置为 no,将导致 Linux 下硬件时钟置为 UTC 时间,这样如果有双系统,Windows 从硬件时钟中读取系统时间就会慢了8小时(CST东8区)。 此情况下,需要将 RTC in local TZ 设置为 yes,命令:timedatectl set-local-rtc 1

  1. timedatectl set-local-rtc 1
  2. [root@Test1 ~]# timedatectl
  3. Local time: Sun 2022-03-20 16:58:45 CST
  4. Universal time: Sun 2022-03-20 08:58:45 UTC
  5. RTC time: Sun 2022-03-20 16:58:45
  6. Time zone: Asia/Shanghai (CST, +0800)
  7. NTP enabled: yes
  8. NTP synchronized: yes
  9. RTC in local TZ: yes
  10. DST active: n/a

设置为 no, 命令为:timedatectl set-local-rtc 0

timedatectl set-time “2022-03-20 16:58:45” :设置系统时间
timedatectl set-ntp true/false :控制是否与网络时间同步