给定一个bash带有值的变量2019-08-15,是否有一些实用程序可以将该日期转换为格式August 15, 2019?
在 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系统手册。