Linux命令之date详解程序员

date [选项] [格式]

date [-u|–utc|–universal] [MMDDhhmm[[CC]yy][.ss]]

  date命令根据指定格式显示当前时间或设置系统时间。很多shell脚本中需要用到date命令来执行操作,例如备份时生成带日期的压缩文件包。

(1).选项

-d,–date=STRING 显示有STRING指定的时间,而不是当前时间。该选项不会改变系统时间

-f,–file=DATEFILE 显示DATEFILE中每一行指定的时间,如同将DATEFILE中每一行作为–date的参数一样

-I[TIMESPEC],–iso-8601[=TIMESPEC] 按照ISO-8601的格式输出日期/时间。TIMESPEC的值可以是date、hours、minutes、seconds、ns,表示输出到哪一位为止,默认date,输出年月日。

-r,–reference=FILE 显示FILE的最后修改时间

-R,–rfc-2822 按照RFV-2822格式输出日期和时间。例如:Sat, 27 Apr 2019 17:05:27 +0800

–rfc-3339=TIMESPEC 按照RFC-3339格式输出日期和时间。TIMESPEC的值可以是date、seconds、ns,表示输出到哪一位为止。

-s,–set=STRING 根据STRING设置时间

-u,–utc,–universal显示或设置全球时间UTC

(2).格式

%% 转义% 
%a 当前区域的星期几的简写(Sun..Sat) 
%A 当前区域的星期几的全称(Sunday..Saturday) 
%b 当前区域的月份的简写(Jan..Dec) 
%B 当前区域的月份全称(January..December) 
%c 当前区域的日期和时间 
%C 世纪,类似%Y 
%d 月份中的几号(01..31) 
%D 日期,等同于%m/%d/%y 
%e 月份中的几号,去零表示,等同于%_d 
%F 全部日期,等同于%Y-%m-%d 
%g ISO格式年份的最后两位数字 
%G ISO格式年份的,一般只和%V一起使用 
%h 等同于%b 
%H (24小时制)小时(00..23) 
%I (12小时制)小时(01..12) 
%j 年份中的日期(001..366) 
%k (24小时制)小时,去零表示,等同于%_H(0..23) 
%l (12小时制)小时,去零表示,等同于%_I(1..12) 
%m 月份(01..12) 
%M 分钟(00..59) 
%n 一个新行,即转行 
%N 纳秒(000000000..999999999) 
%p 当前区域时间是AM还是PM,不知道则为空 
%P 类似%p,但小写字母,即am和pm 
%r 按12小时制显示时间,hh:mm:ss AM/PM 
%R 按24小时制显示小时和分钟,等同于%H:%M 
%s 从1970年1月1日0点0分0秒到现在过了多少秒 
%S 秒(00..60) 
%t 一个tab制表符 
%T 时间,等同于%H:%M:%S 
%u 一周中的第几天(1..7),1是Monday 
%U 一年中的第几个星期,以星期天作为一周的开始(00..53) 
%V 一年中的第几个星期(ISO标准),以星期一作为一周的开始(01..53) 
%w 一周中的第几天(0..6),0是Sunday 
%W 一年中的第几个星期,以星期一作为一周的开始(00..53) 
%x 按照mm/dd/yy的格式显示当前日期 
%X 按照%H:%M:%S的格式显示当前时间(12小时制) 
%y 年份的后两位(00..99) 
%Y 年份(1970..) 
%z 数字时区,格式+hhmm,例如-0400 
%:z 数字时区,格式+hh:mm,例如-04:00 
%::z 数字时区,格式+hh:mm:ss,例如-04:00:00 
%:::z 数字时区,带有必要的精确度,例如-04,+05:30 
%Z 时区名,缩写,例如EDT
默认情况下,用0填充数据的空缺部分,以下选项跟在%后面: - 不进行填充 _ 用空格进行填充 0 用0填充 ^ 如果可能使用大写(并非百分百) # 如果可能使用相反大小写(并非百分百)

(3).实例

1)显示当前日期

[[email protected] ~]$ date +%F 
2019-05-02 
[[email protected] ~]$ date +%Y-%m-%d 
2019-05-02 
[[email protected] ~]$ date +%Y%m%d 
20190502 
[[email protected] ~]$ date +%x 
05/02/2019 
[[email protected] ~]$ date +%m/%d/%Y 
05/02/2019

2)显示当前时间

[[email protected] ~]$ date +%T 
16:01:13 
[[email protected] ~]$ date +%H:%M:%S 
16:01:33 
[[email protected] ~]$ date +%X 
04:01:41 PM 
[[email protected] ~]$ date +%r 
04:02:45 PM 
[[email protected] ~]$ date +%R 
16:03 
[[email protected] ~]$ date +%H:%M 
16:03 

3)显示日期与时间

[[email protected] ~]$ date 
Thu May  2 16:04:15 CST 2019 
[[email protected] ~]$ date +"%F %T" 
2019-05-02 16:04:42 
[[email protected] ~]$ date +"%Y-%m-%d %H:%M:%S" 
2019-05-02 16:05:35 

4)设置时间

修改时间需要到root用户下

[[email protected] ~]# date -s "20190101" 
2019年 01月 01日 星期二 00:00:00 CST 
[[email protected] ~]# date 
2019年 01月 01日 星期二 00:00:02 CST 
[[email protected] ~]# date -s 20190502 
2019年 05月 02日 星期四 00:00:00 CST 
[[email protected] ~]# date 
2019年 05月 02日 星期四 00:00:02 CST 

(4).扩展:同步网络时间

[[email protected] ~]# ntpdate -u ntp.api.bz 
 2 May 16:17:48 ntpdate[11892]: step time server 114.118.7.163 offset 58563.111835 sec 
[[email protected] ~]# date 
2019年 05月 02日 星期四 16:17:52 CST 

ntp常用服务器:
中国国家授时中心:210.72.145.44
NTP服务器(上海) :ntp.api.bz
美国: time.nist.gov
复旦: ntp.fudan.edu.cn
微软公司授时主机(美国) :time.windows.com
北京邮电大学 : s1a.time.edu.cn
清华大学 : s1b.time.edu.cn
北京大学 : s1c.time.edu.cn
台警大授时中心(台湾):asia.pool.ntp.org

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/2921.html

(0)
上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐

发表回复

登录后才能评论