date命令用于显示或设置系统日期。它最常用于以不同格式打印日期和时间,并计算将来和过去的日期。
在本教程中,我们将详解date命令的基础知识。date
命令的语法形式是date [OPTION]... [+FORMAT]
。
date
命令默认使用系统时区。要使用其他时区,请将环境变量TZ
设置为所需时区。
要使用默认格式显示当前系统时间和日期,请在不指定任何选项参数运行date
命令。
输出将包括星期几,月份,月份,时间,时区和年份Sat Jun 1 14:31:01 CEST 2019
。
date
date 命令时间日期格式化
date
命令的输出,可以使用一系列格式控制字符,+
符号进行格式化。格式控件以%
符号开头,并由其值代替。
%Y
字符将会被年份替换,%m
将会被月份替换,%d
与将会被天替换,命令输出将会是这样Year: 2019, Month: 06, Day: 02
。
date +"Year: %Y, Month: %m, Day: %d"
Year: 2019, Month: 06, Day: 02
date "+DATE: %D%nTIME: %T"
DATE: 12/26/22
TIME: 11:30:05
这是一些最常见的格式字符。
%a
是星期几的简称,例如命令date "+%a"
,见会打印的是Mon。
%A
是星期几的全称,例如命令date "+%A"
将会打印Monday。
%b
是月份的简写,例如命令date "+%b"
将会打印Jan。
%B
月份的全称,例如命令date "+%B"
将会打印December。
%d
当前日期的天数,例如命令date "+%d"
将会打印26。
%D
是完整的月/日/年的简写,例如命令date "+%D"
将会打印12/26/22。
%H
是24小时制00..23
,例如命令date "+%H"
将会打印12。
%I
是12小时制01..12
,例如命令date "+%I"
将会打印12。
%j
一年中的某天001..366
,例如命令date "+%j"
将会打印360。
%m
是月份01..12
,例如命令date "+%m"
将会打印12。
%M
是分钟00..59
,例如命令date "+%M"
将会打印45。
%S
是00..60
秒,例如命令date "+%S"
将会打印21。
%u
是1..7
的星期几。例如命令date "+%u"
将会打印1。
%Y
是当前数字年份,例如命令date "+%Y"
将会打印2022。
要获取所有格式选项的完整列表,请在您的终端上运行date --help
或运行man date
。
格式化日期时间
-d
选项允许您使用指定日期进行操作。可以将日期解释为易于理解的日期字符串,也可以指定自定义的格式。
日期字符串还可以接受诸如“tomorrow”, “friday”, “last friday” “next friday”, “next month”, “next week”等值。
由于date
命令默认使用系统时区。要使用其他时区,请将环境变量 TZ
设置为所需时区。
要列出所有可用时区,可以列出/usr/share/zoneinfo
目录文件或运行命令timedatectl list-timezones
。
date -d '16 Dec 1974' +'%A, %d %B %Y'
date -d "last week"
date -d 'TZ="Australia/Sydney" 06:30 next Monday'
Unix 时间戳转换器
date
命令可用作纪元转换器,也就是Unix时间戳。Unix时间戳是自1970年1月1日UTC时间00:00:00起经过的秒数。
要打印从纪元到当前日期的秒数,请使用date
命令%s
格式控件,也就是命令date +%s
。
要将纪元以来的秒转换为日期,请使用date
命令的-d
选项,并在Unix时间戳添加前缀@
。
date +%s
date -d @1234567890
Sat Feb 14 00:31:30 CET 2009
日期与文件名
date
命令最常用于创建包含当前时间和日期的文件名。例如使用日期作为文件名创建Mysql备份文件。
要在Shell脚本中使用date
命令的时间作为文件名,一种方式创建日期时间的变量然后作为文件名称。
例如命令date_now=$(date "+%F-%H-%M-%S")
格式化日期并分别给date_now
变量。
当然也可以直接在文件名中使用date命令的格式化日期作为文件名称,例如命令mysqldump database_name > database_name-$(date +%Y%m%d).sql
。
date_now=$(date "+%F-%H-%M-%S")
mysqldump database_name > database_name-$(date +%Y%m%d).sql
文件最后修改时间
date
命令的-r
选项也可以用于打印文件的最后修改时间。例如命令date -r /etc/hosts
打印/etc/hosts
文件最后修改时间。
如果要修改文件时间戳,请使用touch
命令。
date -r /etc/hosts
设置系统时间和日期
通常不建议使用date
命令手动设置系统时间和日期,因为在大多数Linux发行版中,系统时钟使用ntp
或systemd-timesyncd
服务进行同步。
但是,如果要手动设置系统时钟,可以使用date命令的--set
选项。
例如命令date --set="20190601 17:30"
将日期和时间设置为2019年6月1日下午5:30。
结论
至此,您应该对如何在Linux使用date命令有一个很好的了解。如果您有任何问题或反馈,请随时发表评论。