date
打印或者设置系统的日期和时间
语法
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
常用选项
-d, --date=STRING 显示字符串所指的日期与时间
示例:显示2016-09-09
[root@haiyun ~]# date --date=20160909
Fri Sep 9 00:00:00 CST 2016
[root@haiyun ~]# date -d '20160909'
Fri Sep 9 00:00:00 CST 2016
[root@haiyun ~]# date --date '20160909'
Fri Sep 9 00:00:00 CST 2016
-s, --set=STRING 根据字符串来设置时间
示例:修改时间为2016-09-09
[root@haiyun ~]# date -s 20160909
Fri Sep 9 00:00:00 CST 2016
[root@haiyun ~]# date --set 20160909
Fri Sep 9 00:00:00 CST 2016
-f, --file=DATEFILE 读取文件中的时间并显示出来
示例:读取文件f1中的时间
[root@haiyun ~]# cat f1
20170909
20160909
[root@haiyun ~]# date -f f1
Sat Sep 9 00:00:00 CST 2017
Fri Sep 9 00:00:00 CST 2016
-r, --reference=FILE 显示指定文件的最后修改时间
示例:读取文件f1的最后修改时间
[root@haiyun ~]# date -r f1
Fri Sep 9 00:07:18 CST 2016
-R, --rfc-2822 以RFC 2822格式输出日期和时间
-u, --utc, --universal 输出或设置协调通用时间
PS: 协调世界时(英:Coordinated Universal Time ,法:Temps Universel Coordonné),又称世界统一时间,世界标准时间,国际协调时间。英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。
--help 显示此帮助信息并退出
--version 显示版本信息并退出
FORMAT格式输出:
%% 一个文字的%
%a 当前locale的星期名缩写(例:Mon代表monday星期一)
%A 当前locale的星期名全称(例:monday星期一)
%b 当前locale的月名的缩写(例:Jan代表January一月)
%B 当前locale的月名的全称(例:January一月)
%c 当前locale的日期和时间
例如:
[root@haiyun ~]# date +%c
Fri 09 Sep 2016 01:30:10 AM CST
%C 世纪;比如%Y,通常为省略当前年份的后两位数字
例如:
[root@haiyun ~]# date +%Y
2016
[root@haiyun ~]# date +%C
20
%d 按月计的日期
例如:
[root@haiyun ~]# date +%d
09
[root@haiyun ~]# date
Fri Sep 9 01:33:43 CST 2016
%D 按月计得日期;等于%m/%d/%y
例如:
[root@haiyun ~]# date +%D
09/09/16
[root@haiyun ~]# date +%m/%d/%y
09/09/16
%e 按月计的日期,添加空格,等于%_d
例如:
[root@haiyun ~]# date +%e
9
[root@haiyun ~]# date +%_d
9
%F 完整的日期格式,等于%Y-%m-%d
例如:
[root@haiyun ~]# date +%F
2016-09-09
[root@haiyun ~]# date +%Y-%m-%d
2016-09-09
%g ISO-8601格式年份的最后两位(参见%G)
例如:
[root@haiyun ~]# date +%g
16
PS:ISO-国际标准化组织
%G ISO-8601格式年份的最后两位参数,一般之和%V结合使用
例如:
[root@haiyun ~]# date +%G
2016
%h 等于%b
例如:
[root@haiyun ~]# date +%h
Sep
[root@haiyun ~]# date +%b
Sep
%H 小时(00-23)
例如:
[root@haiyun ~]# date +%H
01
%I 小时(00-12)
例如:
[root@haiyun ~]# date +%I
01
%j 按年计的日期(001-366)
例如:
[root@haiyun ~]# date +%j
253
%k 时(00-23)
例如:
[root@haiyun ~]# date +%k
1
%l 时(00-12)
例如:
[root@haiyun ~]# date +%l
1
%m 月(01-12)
例如:
[root@haiyun ~]# date +%m
09
%M 分钟(00-59)
例如:
[root@haiyun ~]# date +%M
01
%n 换行
例如:
[root@haiyun ~]# date +%Y%n%m
2016
09
%N 纳秒(000000000-999999999)
例如:
[root@haiyun ~]# date +%N
303199351
%p 当前locale 下的"AM"或者"PM",未知时输出为空
例如:
[root@haiyun ~]# date +%p
AM
%P 与%p 类似,但是输出小写字母
例如:
[root@haiyun ~]# date +%P
am
%r 当前locale 下的 12 小时时钟时间
例如:
[root@haiyun ~]# date +%r
02:10:02 AM
%R 24 小时时间的时和分,等价于 %H:%M
例如:
[root@haiyun ~]# date +%R
02:11
[root@haiyun ~]# date +%H:%M
02:11
%s 自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数
例如:
[root@haiyun ~]# date +%s
1473358359
%S 秒(00-60)
例如:
[root@haiyun ~]# date +%S
59
%t 输出制表符 Tab
例如:
[root@haiyun ~]# date +%Y%t%m
2016 09
%T 时间,等于%H:%M:%S
例如:
[root@haiyun ~]# date +%T
02:16:41
[root@haiyun ~]# date +%H:%M:%S
02:16:42
%u 星期,1 代表星期一
例如:
[root@haiyun ~]# date +%u
5
%U 一年中的第几周,以周日为每星期第一天(00-53)
例如:
[root@haiyun ~]# date +%U
36
%V ISO-8601 格式规范下的一年中第几周,以周一为每星期第一天(01-53)
例如:
[root@haiyun ~]# date +%V
36
%w 一星期中的第几日(0-6),0 代表周一
例如:
[root@haiyun ~]# date +%w
5
%W 一年中的第几周,以周一为每星期第一天(00-53)
例如:
[root@haiyun ~]# date +%W
36
%x 当前locale 下的日期描述
例如:
[root@haiyun ~]# date +%x
09/09/2016
%X 当前locale 下的时间描述
例如:
[root@haiyun ~]# date +%X
02:27:46 AM
%y 年份最后两位数位 (00-99)
例如:
[root@haiyun ~]# date +%y
16
%Y 年份
例如:
[root@haiyun ~]# date +%Y
2016
%z +hhmm 数字时区(例如,-0400)
%:z +hh:mm 数字时区(例如,-04:00)
%::z +hh:mm:ss 数字时区(例如,-04:00:00)
%:::z 数字时区带有必要的精度 (例如,-04,+05:30)
%Z 按字母表排序的时区缩写 (例如,EDT)
PS:默认情况下,日期的数字区域以0 填充。
以下可选标记可以跟在"%"后:
- (连字符)不填充该域
_ (下划线)以空格填充
0 (数字0)以0 填充
^ 如果可能,使用大写字母
# 如果可能,使用相反的大小写
时间输出
date是Linux系统里自带的一个系统命令,用来显示当前的系统时间,不过默认显示的结果里包括很多信息,特别是做为文件名输出时,不是很方便好在date命令里包含格式化输出的选项
[root@haiyun ~]# date +%Y-%m-%d
2016-09-09
[root@haiyun ~]# date +%H:%M:%S
02:39:27
[root@haiyun ~]# date "+%Y-%m-%d %H:%M:%S"
2016-09-09 02:40:24
[root@haiyun ~]# date -d today
Fri Sep 9 02:40:42 CST 2016
[root@haiyun ~]# date -d now
Fri Sep 9 02:40:47 CST 2016
[root@haiyun ~]# date -d tomorrow
Sat Sep 10 02:41:01 CST 2016
[root@haiyun ~]# date -d yesterday
Thu Sep 8 02:41:12 CST 2016
时间设置
我们一般使用“date -s”命令来修改系统时间
比如将系统时间设定成2011年7月13日的命令:date -s 07/13/2011
将系统时间设定成11点12分0秒的命令:date -s 11:12:00
设置时间为2017-07-07 11:11:11的命令:date -s '2017-07-07 11:11:11'
注意:这里说的是系统时间,是linux由操作系统维护的。
在系统启动时,Linux操作系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现。为了保持系统时间与CMOS时间的一致性,Linux每隔一段时间会将系统时间写入CMOS。由于该同步是每隔一段时间(大约是11分钟)进行的,在我们执行date -s后,如果马上重起机器,修改时间就有可能没有被写入CMOS,这就是问题的原因。
如果要确保修改生效可以执行如下命令。
#clock –w
这个命令强制把系统时间写入CMOS。
网友评论