本文最后更新于 601 天前,其中的信息可能已经过时,如有错误请发送邮件到wuxianglongblog@163.com
Linux的两种时钟
系统时钟:由Linux内核通过CPU的工作频率进行的
硬件时钟:主板
相关命令
date 显示和设置系统时间
date +%s 显示系统的时间戳
date -d @1509536033 由给定的时间转成时间戳
hwclock,clock: 显示硬件时钟
-s, --hctosys 以硬件时钟为准,校正系统时钟
-w, --systohc 以系统时钟为准,校正硬件时钟
时区:/etc/localtime
显示日历:cal –y1、date 显示和设置系统时间
#date显示日期和时间
[root@localhost ~]# date
Tue Jan  9 03:10:59 EST 2024
[root@localhost ~]# 
#date -s "字符串"设置时间只有root权限才能设置,其他只能查看
[root@localhost ~]# date
Sat Nov 11 16:11:13 EST 2023
[root@localhost ~]# date -s '20230111 16:11:11'
Wed Jan 11 16:11:11 EST 2023
[root@localhost ~]# date
Wed Jan 11 16:11:12 EST 2023
date +%s #显示系统的时间戳
[root@localhost ~]# date +%s 
1673473237
[root@localhost ~]# 
#date -d由给定的时间转成时间戳
[root@localhost ~]# date -d @1509536033
Wed Nov  1 07:33:53 EDT 2017
[root@localhost ~]# 
格式 FORMAT 控制着输出格式. 仅当选项指定为全球时间时本格式才有效。 分别解释如下:
%a
#当前区域的星期几的简写 (Sun..Sat) 
[root@localhost ~]# date +%a
Wed
[root@localhost ~]#%A
#当前区域的星期几的全称 (不同长度) (Sunday..Saturday) 
[root@localhost ~]# date +%A
Wednesday
[root@localhost ~]%b
 #当前区域的月份的简写 (Jan..Dec) 
[root@localhost ~]# date +%b
Jan
[root@localhost ~]#%B
 #当前区域的月份的全称(变长) (January..December) 
[root@localhost ~]# date +%B
January
[root@localhost ~]#%c
#当前区域的日期和时间 (Sat Nov 04 12:02:33 EST 1989) 
[root@localhost ~]# date +%c
Wed 11 Jan 2023 04:22:53 PM EST
[root@localhost ~]# %d
#(月份中的)几号(用两位表示) (01..31) 
[root@localhost ~]# date +%d
11
[root@localhost ~]# #日期(按照 月/日期/年 格式显示) (mm/dd/yy) 
[root@localhost ~]# date +%D
01/11/23
[root@localhost ~]# %e
#(月份中的)几号(去零表示) ( 1..31) 
[root@localhost ~]# date +%e
11
[root@localhost ~]#%F
#显示当前年月日 例如 2022-1-11
[root@localhost ~]# date +%F
2023-01-11
[root@localhost ~]# %h
 #同 %b 
[root@localhost ~]# date +%h
Jan
[root@localhost ~]#%H
#小时(按 24 小时制显示,用两位表示) (00..23) 
[root@localhost ~]# date +%H
16
[root@localhost ~]# %I
#小时(按 12 小时制显示,用两位表示) (01..12) 
[root@localhost ~]# date +%l
 4
[root@localhost ~]# %j
#(一年中的)第几天(用三位表示) (001..366) 
[root@localhost ~]# date +%j
011
[root@localhost ~]# %k
#小时(按 24 小时制显示,去零显示) ( 0..23) 
[root@localhost ~]# date +%k
16
[root@localhost ~]# %l
#小时(按 12 小时制显示,去零表示) ( 1..12) 
[root@localhost ~]# date +%l
 4
[root@localhost ~]# %m
#月份(用两位表示) (01..12) 
[root@localhost ~]# date +%m
01
[root@localhost ~]#%M
#分钟数(用两位表示) (00..59) 
[root@localhost ~]# date +%M
27
[root@localhost ~]#%n
#换行 
[root@localhost ~]# date +%n
[root@localhost ~]#%p
#当前时间是上午 AM 还是下午 PM 
[root@localhost ~]# date +%p
PM
[root@localhost ~]#%r
#时间,按 12 小时制显示 (hh:mm:ss [A/P]M) 
[root@localhost ~]# date +%r
04:27:44 PM
[root@localhost ~]# %s
 从 1970年1月1日0点0分0秒到现在历经的秒数 (GNU扩充)
%S
#秒数(用两位表示)(00..60) 
[root@localhost ~]# date +%S
49
[root@localhost ~]#%t
#水平方向的 tab 制表符 
[root@localhost ~]# date +%t
[root@localhost ~]#%T
#时间,按 24 小时制显示(hh:mm:ss) 
[root@localhost ~]# date +%T
16:28:02
[root@localhost ~]#%U
#(一年中的)第几个星期,以星期天作为一周的开始(用两位表示) (00..53) 
[root@localhost ~]# date +%U
02
[root@localhost ~]#%V
  #(一年中的)第几个星期,以星期一作为一周的开始(用两位表示) (01..52) 
[root@localhost ~]# date +%V
02
[root@localhost ~]# %w
#用数字表示星期几 (0..6); 0 代表星期天 
[root@localhost ~]# date +%w
3
[root@localhost ~]#%W
#(一年中的)第几个星期,以星期一作为一周的开始(用两位表示) (00..53) 
[root@localhost ~]# date +%W
02
[root@localhost ~]#%x
#按照 (mm/dd/yy) 格式显示当前日期 
[root@localhost ~]# date +%x
01/11/2023
[root@localhost ~]# %X
#按照 (%H:%M:%S) 格式显示当前时间 
[root@localhost ~]# date +%X
04:28:31 PM
[root@localhost ~]#%y
#年的后两位数字 (00..99) 
[root@localhost ~]# date +%y
23
[root@localhost ~]#%Y
#年(用 4 位表示) (1970...) 
[root@localhost ~]# date +%Y
2023
[root@localhost ~]# %z
#按照 RFC-822 中指定的数字时区显示(如, -0500) (为非标准扩充) 
[root@localhost ~]# date +%z
-0500
[root@localhost ~]# %Z
#时区(例如, EDT (美国东部时区)), 如果不能决定是哪个时区则为空 
[root@localhost ~]# date +%Z
EST
[root@localhost ~]# 默认情况下,用 0 填充数据的空缺部分. GNU 的 date 命令能分辨在 `%'和数字指示之间的以下修改.
MARKDOWN_HASH19c446599a90fbba3b8d92b665f9191cMARKDOWNHASH' (下划线) 用空格进行填充 。
[root@localhost ~]# date +%Y-%m-%d-%H-%M-%S
2023-01-11-16-38-45
[root@localhost ~]#