Date命令详解——如何设置linux系统时间

date 可以用来显示或设定系统的日期与时间,在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用的标记列表如下 :

时间方面:

% : 印出 %

%n : 下一行

%t : 跳格

%H :小时(0..23

%I : 小时(01..12

%k : 小时(0..23

%M : 分钟(0..59

%p : 显示本地时段“上午”或“下午”

%r : 直接显示时间12 小时制,格式为hh:mm:ss [AP]M)

%s : 1970 1 1 00:00:00UTC 到目前为止的秒数

%S : 秒(00.59

%T : 直接显示时间24 小时制)

%X : 相当于 %H:%M:%S12小时制,时分秒)

%Z : 显示时区(如EST

例如

date +%H:%M:%S

15:16:52

date +%X

03:18:57 PM (下午318秒)

date +%T

15:23:48

日期方面:

%a : 星期几 (Mon..Sun)

%A : 星期几 (Monday..Sunday)

%b : 月份 (Jan..Dec)

%B : 月份 (January..December)

%c : 直接显示日期与时间

%d : (01..31

%D : 直接显示日期 (mm/dd/yy)

%h : %b

%j : 一年中的第几天 (001..366

%m : 月份 (01..12

%U : 一年中的第几周 (00..53(以 Sunday 为一周的第一天的情形)

%w : 一周中的第几天 (0..6

%W : 一年中的第几周 (00..53(以 Monday 为一周的第一天的情形)

%x : 直接显示日期 (mm/dd/yy)

%y : 年份的最后两位数字 (00.99

%Y : 完整年份 (0000..9999


例如

date +%Y-%m-%d

2014-01-05

date +%x

01/05/2014

date +"%Y-%m-%d %H:%M:%S"

2014-01-05 15:21:00

例子 :

显示时间后跳行,再显示目前日期:

date +%T%n%D

15:22:23

01/05/14

显示月份与日数 :

date +%B%d

January05

注意 :

当你不希望出现无意义的 0 时(比如说 1999/03/07),则可以在标记中插入 - 符号,比如说 date +%-H:%-M:%-S 会把时分秒中无意义的 0 给去掉,像是原本的 08:09:04 会变为 8:9:4。另外,只有取得权限者(比如说 root)才能设定系统时间当你以 root 身份更改了系统时间之后,请记得以clock -w 来将系统时间写入CMOS ,这样下次重新开机时系统时间才会持续保持最新的正确值


Linux时钟分为系统时钟(System Clock硬件(Real Time Clock,简称RTC)时钟。系统时钟是指当前LinuxKernel中的时钟,而硬件时钟则是主板上由电池供电的时钟,这个硬件时钟可以在BIOS中进行设置。Linux启动时,系统时钟会去读取硬件时钟的设置,然后系统时钟就会独立于硬件运作。

Linux中的所有命令(包括函数)都是采用的系统时钟设置。在Linux中,用于时钟查看和设置的命令主要有datehwclock


硬件时间和系统时间的同步

按照前面的说法,重新启动系统,系统时间会读取硬件时间,实现同步,但是在不重新启动的时候,需要用hwclock命令实现同步

硬件时钟与系统时钟同步:

# hwclock --hctosyshc代表硬件时间,sys代表系统时间)

系统时钟和硬件时钟同步:(让系统的时间同步到硬件时钟)

# hwclock --systohc


设置系统时间

date --set 14:37:50

clock –w


将日期时间设置成1996610日下午1120秒可以用

#date -s "06/10/1996 13:12:00"  格式是"MM/DD/YYYYhh:mm:ss"

或者

#date 061013121996.00  (格式是MMDDhhmmYYYY.ss (月日时分年.)

系统启动时,Linux操作系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现为了保持系统时间与CMOS时间的一致性, Linux每隔一段时间会将系统时间写入CMOS。由于该同步是每隔一段时间(大约是11分钟)进行的,在我们执行date -s后,如果马上重起机器,修改时间就有可能没有被写入CMOS,这就是问题的原因。如果要确保修改生效可以执行如下命令。

#hwclock -w

这个命令强制把系统时间写入CMOS,(等同于hwclock--systohc


1.在虚拟终端中使用date命令来查看和设置系统时间

查看系统时钟的操作:

#date

设置系统时钟的操作:

#date 091713272003.30

通用的设置格式:

#date 月日时分年.


2.使用hwclockclock命令查看和设置硬件时钟

查看硬件时钟

#hwclock --show

#clock --show

20030917星期三 132411 -0.482735seconds


设置硬件时钟的操作:

# hwclock --set --date="09/17/200313:26:00"

或者

# clock --set --date="09/17/200313:26:00"

通用的设置格式:hwclock/clock --set --date=//::”。


显示/查看时区

[root@nginx01 ~]# timedatectl
      Local time: 四 2019-03-21 17:57:03 CST
  Universal time: 四 2019-03-21 09:57:03 UTC
        RTC time: 四 2019-03-21 09:57:03
       Time zone: Asia/Shanghai (CST, +0800)     
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
[root@nginx01 ~]# date -R
Thu, 21 Mar 2019 18:02:30 +0800


配置时区为东8区 CST(东8区)

timedatectl  set-timezone Asia/Shanghai