date 命令


语法

date [OPTION]... [+FORMAT]
date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]

可选参数

-u 或 --utc 或 --universal :以 UTC(世界协调时间)显示时间,而不是本地时间。
# date -u
Thu Sep 12 02:03:25 UTC 2024
# date 
Thu Sep 12 10:03:31 CST 2024


-d 或 --date="STRING"
显示指定日期和时间,允许你以人类可读的方式输入时间或日期。你可以指定过去或未来的时间,也可以对时间进行运算。
# date -d "next Monday"
Mon Sep 16 00:00:00 CST 2024
# date -d "2024-09-15"
Sun Sep 15 00:00:00 CST 2024
# date -d "3 days ago"
Mon Sep  9 10:07:21 CST 2024


-s 或 --set="STRING" :手动设置系统时间。需要 sudo 权限。
示例:将系统时间设置为 2024 年 9 月 12 日 10:30
# date -s "2024-09-12 10:30:00"
Thu Sep 12 10:30:00 CST 2024
# date
Thu Sep 12 10:30:02 CST 2024


--rfc-2822 :按照 RFC 2822 标准显示日期和时间(常见于邮件头)。
[root@kjt ~]# date --rfc-2822
Thu, 12 Sep 2024 10:31:11 +0800


--rfc-3339=timespec(date seconds ns)
按照 RFC 3339 标准显示日期和时间。timespec 可以是 date、seconds 或 ns。
[root@kjt ~]# date --rfc-3339=date
2024-09-12
[root@kjt ~]# date --rfc-3339=seconds
2024-09-12 10:33:03+08:00
[root@kjt ~]# date --rfc-3339=ns
2024-09-12 10:33:10.304126674+08:00


-f 或 --file=FILE
从指定文件中读取日期字符串,并对其进行转换和输出。
[root@kjt ~]# echo "2024-09-12" > dates.txt
[root@kjt ~]# date -f dates.txt
Thu Sep 12 00:00:00 CST 2024

格式化符号总结

格式符号	解释					示例输出
%Y		四位数年份		  		   2024
%y		两位数年份		    		24
%m		月份(01-12)		 		 09
%d		天(01-31)		  		  12
%H		小时(24 小时制)	   		   10
%M		分钟(00-59)				 35
%S		秒(00-59)				  15
%T		时间(等同于 %H:%M:%S)	 10:35:15
%A		星期几的全称				  Tuesday
%a		星期几的缩写				    Tue
%B		月份的全称				   September
%b		月份的缩写				     Sep
%Z		时区						   UTC
%s		Unix 时间戳(自1970年)	 1694518435
[root@kjt ~]# date +"%Y-%m-%d %H:%M:%S"
2024-09-12 11:42:13

日期的加减

date +%Y%m%d                   # 显示年月日
date -d "+1 day" +%Y%m%d       # 显示后一天的日期
date -d "-1 day" +%Y%m%d       # 显示前一天的日期
date -d "-1 month" +%Y%m%d     # 显示上一月的日期
date -d "+1 month" +%Y%m%d     # 显示下一月的日期
date -d "-1 year" +%Y%m%d      # 显示前一年的日期
date -d "+1 year" +%Y%m%d      # 显示下一年的日期


[root@kjt ~]# date -d "+1 day" +%Y%m%d 
20240913
[root@kjt ~]# date -d "+1 day" +%Y-%m-%d 
2024-09-13
[root@kjt ~]# date -d "-11 day" +%Y-%m-%d 
2024-09-01

日期的设定

date -s                         # 设置当前时间,只有root权限才能设置,其他只能查看
date -s 20120523                # 设置成20120523,这样会把具体时间设置成00:00:00
date -s 01:01:01                # 设置具体时间,不会对日期做更改
date -s "01:01:01 2012-05-23"   # 这样可以设置全部时间
date -s "01:01:01 20120523"     # 这样可以设置全部时间
date -s "2012-05-23 01:01:01"   # 这样可以设置全部时间
date -s "20120523 01:01:01"     # 这样可以设置全部时间