在 Bash 中格式化日期和时间

Nilesh Katuwal 2023年1月30日 2022年5月11日
  1. 在 Bash 中使用内置的 printf 格式化日期和时间
  2. 在 Bash 中使用 date 命令格式日期和时间
在 Bash 中格式化日期和时间

要在 Linux shell 脚本中格式化日期或时间,请使用标准 date 命令。

相同的命令可用于 shell 脚本。Linux 中的 date 命令显示和更改系统日期和时间。

用户还可以使用此命令以各种格式打印时间并计算未来和以前的日期。

在 Bash 中使用内置的 printf 格式化日期和时间

在大于或等于 4.2 的 bash 版本中,最好使用 printf 内置日期格式化程序而不是外部日期格式化程序。

要获得 YYYY-MM-DD 格式:

$ printf '%(%Y-%m-%d)T\n' -1

-1 表示当前时间。

输出:

2021-12-21

我们也可以将上面的命令写成:

$ printf '%(%F)T\n' -1

输出:

2021-12-21

我们可以通过使用 -v 并指定变量名称来保存当前时间。要将当前时间保存在变量 cdate 中并打印它,我们可以执行以下操作:

$ printf -v cdate '%(%F)T' -1
$ echo $cdate

上面的命令捕获当前日期作为变量并将其存储在 cdate 中,echo 将打印变量的值。

输出:

2021-12-21

在 Bash 中使用 date 命令格式日期和时间

我们可以对低于 4.2 的 bash 版本使用 date 命令。

MM-DD-YY 格式显示当前日期:

$ date +"%m-%d-%y"

+ 符号表示用户定义的格式字符串,它指定日期和时间的显示方式。

输出:

12-21-21

要将年份转换为四位数,请将 y 更改为 Y

$ date +"%m-%d-%Y"

输出:

12-21-2021

我们还可以执行以下操作以 YYYY-MM-DD 格式打印当前日期。

$ date -I

输出:

2021-12-21

仅显示时间:

$ date +"%T"

输出:

13:01:00

HH:MM 格式显示时间:

$ date +"%H-%M"

输出:

13-02

要将当前日期存储在 shell 变量中,我们可以执行以下操作:

$ cdate=$(date +"%m-%d-%Y")
$ echo $cdate

我们已经捕获了当前日期并将其存储在 cdate 中。echo 打印 cdate 值。

输出:

12-21-2021

要在 date 中添加 N 天,我们使用以下命令:

date -d="YYYY-MM-DD+N days"

让我们看一个例子。

$ date -d "2021-12-21+20 days"

输出:

Mon 10 Jan 2022 12:00:00 AM