date命令用来显示或设置系统时间与日期。

命令功能

date命令用来显示或设置系统时间与日期。date命令可以打印不同格式的时间或日期,被用来根据时间和日期执行操作。
在类UNIX系统中,日期被存储为一个整数,其大小为自世界标准时间(UTC)1970年1月1日0时0分0秒起流逝的秒数。

命令格式

date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

命令参数

表1: 命令参数

参 数 描 述
-d 显示字符串描述的时间
-f 显示DATEFILE文件中的每行时间
-r 显示文件的最后修改时间
-R 以RFC-2822兼容日期格式显示时间
-rfc-2822 以RFC-2822兼容日期格式显示时间
-s 根据字符串来设置日期与时间
-u 显示或设定为Coordinated Universal Time时间格式(UTC)
–help 显示date命令的帮助信息
–version 显示date命令的版本信息

表2: Format参数格式

参数 描述
%% 显示字符%
%a 星期几的缩写(Sun..Sat)
%A 星期几的完整名称(Sunday…Saturday)
%b 月份的缩写(Jan..Dec)
%B 月份的完整名称(January..December)
%c 日期与时间。只输入date指令也会显示同样的结果
%C 世纪(年份除100后去整) [00-99]
%d 日期(以01-31来表示)。
%D 日期(含年月日)。
%e 一个月的第几天 ( 1..31)
%F 日期,同%Y-%m-%d
%g 年份(yy)
%G 年份(yyyy)
%h 同%b
%H 小时(00..23)
%I 小时(01..12)
%j 一年的第几天(001..366)
%k 小时( 0..23)
%l 小时( 1..12)
%m 月份(01..12)
%M 分钟(00..59)
%n 换行
%N 纳秒(000000000..999999999)
%p AM or PM
%P am or pm
%r 12小时制时间(hh:mm:ss [AP]M)
%R 24小时制时间(hh:mm)
%s 从00:00:00 1970-01-01 UTC开始的秒数
%S 秒(00..60)
%t 制表符
%T 24小时制时间(hh:mm:ss)
%u 一周的第几天(1..7); 1 表示星期一
%U 一年的第几周,周日为每周的第一天(00..53)
%V 一年的第几周,周一为每周的第一天 (01..53)
%w 一周的第几天 (0..6); 0 代表周日
%W 一年的第几周,周一为每周的第一天(00..53)
%x 日期(mm/dd/yy)
%X 时间(%H:%M:%S)
%y 年份(00..99)
%Y 年份 (1970…)
%z RFC-2822 风格数字格式时区(-0500)
%:z 以 +hh:mm 的数字格式表示时区 (如: -04:00)
%::z 以 +hh:mm:ss 的数字格式表示时区 (如: -04:00:00)
%:::z 以数字格式表示时区, 其中 : 的个数由你需要的精度来决定 (例如, -04, +05:30)
%Z 时区(e.g., EDT), 无法确定时区则为空

命令实例

显示UTC时间

描述:显示当前时间。
命令:
date
date -d now
描述:显示当前UTC时间,UTC意思是世界上最主要的时钟和时间的标准。
命令:date -u
输出:

查找3周后的日期

命令:date -d "3 weeks"
输出:

查找3周又4天后的日期

命令:date -d "3 weeks 4 days"
输出:

获取下个月的日期

命令:date -d "next month"
输出:

获取上个星期天的日期

命令:date -d "last sunday"
输出:

自定义日期格式

描述:要自定义日期格式,使用加号+。
命令:

1
2
3
4
5
6
date +"%Y-%m-%d %H:%M:%S"
date +"%Y-%m-%d %H:%M:%S" -d "-1day"
date +"%Y-%m-%d %H:%M:%S" -d "+2day"
date +"%Y-%m-%d %H:%M:%S" -d "+3hour"
date +"%Y-%m-%d %H:%M:%S" -d "+30minute"
date +"%Y-%m-%d %H:%M:%S" -d "+300second"

输出:

说明:date命令会翻译所有的百分号(%)开头的格式和输出在引号(“”)内所有的内容。

以yyyy-mm-dd的格式显示日期

描述:%F的格式是yyyy-mm-dd,即%Y-%m-%d。
命令:date +%F
输出:

只显示时间

描述:%T格式是 时:分:秒 的格式,即%H:%M:%S。
命令:date +%T
输出:

显示今天是一年中的第几天

命令:date +%j
输出:

显示文件最后修改的时间

命令:date -r date.txt
输出:

显示文件中的时间

描述:-f选项可以显示每行一个日期的文件。
命令:date -f date.txt
输出:

设置系统时间

描述:使用-s或–set来设置系统日期和时间。注意,必须拥有root特权,否则会出错。
命令:
date -s "2017-06-19 00:00:00"
date --set="2017-06-19 00:00:00"
输出:

打包时以时间命名

描述:压缩目录/etc到当前目录,文件名为etc-2018-06-19.tar.gz。通过在`之间`或$()中内嵌命令。
命令:

1
2
3
# tar czvf etc-$(date +%F).tar.gz /etc
或者
# tar czvf etc-`date +%F`.tar.gz /etc

在脚本中使用date命令

命令:
date +"DATE: %A %b-%d-%Y TIME: %T WEEK NUMBER: %W"
输出: