2

Linux date命令详解教程

 1 year ago
source link: https://www.myfreax.com/linux-date-command/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Linux date命令详解教程

date命令用于显示或设置系统日期。它最常用于以不同格式打印日期和时间

Updated At 26 Dec 2022 5 min read
By myfreax
Linux date命令详解教程

Linux date命令示例

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。

%S00..60秒,例如命令date "+%S"将会打印21。

%u1..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发行版中,系统时钟使用ntpsystemd-timesyncd服务进行同步。

但是,如果要手动设置系统时钟,可以使用date命令的--set选项。

例如命令date --set="20190601 17:30"将日期和时间设置为2019年6月1日下午5:30。

至此,您应该对如何在Linux使用date命令有一个很好的了解。如果您有任何问题或反馈,请随时发表评论。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK