Linux中的Date命令
在本教程中,我们将介绍date
命令的基本知识。
date
命令显示或设置系统日期。它最常用于打印不同格式的日期和时间以及计算未来和过去的日期。
使用Linux的date
命令
date
命令的句法如下:
date [OPTION]... [+FORMAT]
要使用默认的格式显示当前的系统时间和日期,请在没有任何选项和参数的情况下调用该命令:
date
输出包括星期、月、日、时间、时区和年份:
输出
Sat Jun 1 14:31:01 CEST 2019
日期格式化选项
date
命令的输出可以用一连串的格式控制字符进行格式化,前面是+
符号。格式控制字符以%
符号开始,并以其值代替。
date +"Year: %Y, Month: %m, Day: %d"
%Y
字符将被替换为年份,%m
被替换为月份,%d
被替换为月份中的一天:
输出
Year: 2019, Month: 06, Day: 02
下面是另一个例子:
输出
date "+DATE: %D%nTIME: %T"
输出
DATE: 06/02/19
TIME: 01:47:04
下面是一些最常见的格式化字符的小清单:
%a
- 当地的工作日缩写(例如,Mon)。%A
- 当地的工作日全称缩写(例如,Monday)。%b
- 当地的简写月名(例如,Jan)。%B
- 当地的长月名缩写(例如,January)。%d
- 月中的第几天(例如 01)%H
- 小时(00...23)。%I
- 小时(01...12)。%j
一年中的第几天(001...366)。%m
- 月份(01...12)。%M
- 分钟 (00...59)%S
- 秒(00...60)%u
- 星期几(1...7)。%Y
- 年份的完整显示(例如,2019年)
要获得所有格式化选项的完整列表,请在终端机上运行date --help
或man date
。
日期字串
-d
选项允许你对一个特定的日期进行操作。你可以将日期指定为人类可读的日期字符串,如下所示:
date -d "2010-02-07 12:10:53"
输出
Sun Feb 7 12:10:53 CET 2010
使用自定义的格式化:
date -d '16 Dec 1974' +'%A, %d %B %Y'
输出
Monday, 16 December 1974
日期字符串可接受 "tomorrow"、"friday"、"last friday"、"next friday"、"next month"、"next week"等值。
date -d "last week"
输出
Sat May 25 14:31:42 CEST 2019
你还可以使用日期字符串选项来显示不同时区的当地时间。例如,要显示澳大利亚东海岸下周一早上6:30的当地时间,你可以输入
date -d 'TZ="Australia/Sydney" 06:30 next Monday'
Sun Jun 2 22:30:00 CEST 2019
覆盖时区
date
命令返回默认的系统时区的日期。要使用不同的时区,请将环境变量 TZ
设置为所需的时区。
例如,要显示澳大利亚墨尔本的时间,你可以键入:
TZ='Australia/Melbourne' date
输出
Sat Jun 1 22:35:10 AEST 2019
要列出所有可用的时区,你可以列出/usr/share/zoneinfo
目录下的文件,或使用timedatectl list-timezones
命令。
纪元换算器
date
命令可以作为一个Epoch转换器使用。Epoch,即Unix的时间戳,是指从1970年1月1日00:00:00 UTC开始,已经过去的秒数。
要打印从纪元到当前日期的秒数,用%s
的格式控制调用date
:
date +%s
输出
1559393792
要将自纪元以来的秒数转换为日期,请将秒数设置为以@
为前缀的日期字符串:
date -d @1234567890
输出
Sat Feb 14 00:31:30 CET 2009
将date
与其他命令一起使用
date
命令最常用于创建文件名
下面的命令将创建一个Mysql备份文件,其格式如下database_name-20190601.sql
。
mysqldump database_name > database_name-$(date +%Y%m%d).sql
你也可以在你的shell脚本中使用date
命令。在下面的例子中,我们要把date
的输出分配给date_now
变量:
date_now=$(date "+%F-%H-%M-%S")
echo $date_now
输出
2019-06-01-15-02-27
显示一个文件的最后修改时间
带有-r
选项的date
命令显示一个文件的最后修改时间。比如说:
date -r /etc/hosts
输出
Tue Jul 24 11:11:48 CEST 2018
如果你想修改文件的时间戳,请使用touch
命令 。
设置系统的时间和日期
不建议用date
命令手动设置系统时间和日期,因为在大多数Linux发行版中,系统时钟是通过ntp
或systemd-timesyncd
服务来同步的。
然而,如果你想手动设置系统时钟,你可以使用--set=
选项。例如,如果你想把日期和时间设置为2019年6月1日下午5:30,你就可以输入:
date --set="20190601 17:30"
总结
Linux的date
命令显示或设置系统的日期和时间。
如果你有任何问题或反馈意见,请随时留言。