如何在命令行中将 2019-08-15 日期格式转换为 2019 年 8 月 15 日?

Vil*_*age 3 command-line date

给定一个bash带有值的变量2019-08-15,是否有一些实用程序可以将该日期转换为格式August 15, 2019

Kus*_*nda 7

在 Linux 或任何使用 GNU 的系统上date

$ thedate=2019-08-15
$ date -d "$thedate" +'%B %e, %Y'
August 15, 2019
Run Code Online (Sandbox Code Playgroud)

在 macOS、OpenBSD 和 FreeBSD 上,date默认情况下GNU不可用:

$ thedate=2019-08-15
$ date -j -f '%Y-%m-%d' "$thedate" +'%B %e, %Y'
August 15, 2019
Run Code Online (Sandbox Code Playgroud)

-j选项禁用设置系统时钟,使用的格式字符串-f描述输入日期格式(应该是strptime(3)描述变量值使用的格式的格式字符串)。然后跟随变量的值和您希望输出采用的strftime(3)格式(应该是格式字符串)。

NetBSD 用户可以使用与上述类似但没有-f input_fmt选项的东西,因为他们的date实现使用parsedate(3). 另请注意-d指定输入日期字符串的选项:

$ thedate=2019-08-15
$ date -j -d "$thedate" +'%B %e, %Y'
August 15, 2019
Run Code Online (Sandbox Code Playgroud)

另请参阅date系统手册。