Linux中的Date命令

评论 0 浏览 0 2019-06-02

在本教程中,我们将介绍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 --helpman 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发行版中,系统时钟是通过ntpsystemd-timesyncd服务来同步的。

然而,如果你想手动设置系统时钟,你可以使用--set=选项。例如,如果你想把日期和时间设置为2019年6月1日下午5:30,你就可以输入:

date --set="20190601 17:30"

总结

Linux的date命令显示或设置系统的日期和时间。

如果你有任何问题或反馈意见,请随时留言。

最后更新2023-09-04
0 个评论
标签