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

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

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

答案1

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

$ thedate=2019-08-15
$ date -d "$thedate" +'%B %e, %Y'
August 15, 2019

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

$ thedate=2019-08-15
$ date -j -f '%Y-%m-%d' "$thedate" +'%B %e, %Y'
August 15, 2019

-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

date另请参阅您系统上的手册。

答案2

假设您可以访问 GNU date

$ date --date="2019-08-15" "+%B %d, %Y"
August 15, 2019

检查联机帮助页日期( man date)。

相关内容