我将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日期无法读取用户输入。