更改OSX命令中的日期格式



我将Curl命令输出存储在一个作为日期的变量中。(任何以前的日期(

date=`curl ...`

输出为:

03-22-2021

现在我想将此日期格式更改为低于

March 22, 2021

我正在运行以下命令:

currDate="03-22-2021"
formattedDate=`date -d "${currDate}" +%B %d, %Y`
echo $formattedDate

但是我收到这个错误

date: illegal time format
usage: date [-jnRu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ... 
[-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]

可以使用这样的日期格式吗?怎么做?

我已经按照下面的OSX 解决了上述问题

currDate="03-22-2021"
formattedDate=`date -jf "%m-%d-%Y" "${currDate}" +"%B %d, %Y"`
echo $formattedDate

输出为:-

March 22, 2021

有可能使用这样的日期格式吗?

否。

如何做到这一点?

将格式转换为GNU日期可以吃的东西。然后通过。

我通常看man date:

日期字符串--date=STRING是一个大部分自由格式的人类可读的日期字符串;2004年2月29日星期日16:21:42-0800";或";2004-02-29 16:21:42";甚至"下周四";。[…]

我建议使用YYYY-MM-DD hh-mm-ss格式并添加时区信息。

tmp=03-22-2021
date -d "${tmp:6:4}-${tmp:0:2}-${tmp:3:2} 12:00:00 UTC" "+%B %d, %Y"

不要使用回溯标记`。请改用$(..)

使用检查脚本http://shellcheck.net

date的格式参数必须是一个参数,而不是+%B %d, %Y的三个参数。

有关${tmp:5:4}扩展的说明,请参阅bash手册中的变量扩展部分。

对于shell中日期更复杂的情况,我建议使用带有strptime命令的dateutils包。

在OSX命令中

在OSX上安装GNU日期或安装dateutils。OSX上可用的BSD日期无法读取用户输入。

最新更新