我试图用已知格式读取bash中的日期:
date -d '2009/05/11 08:27:00'
完美地工作,它检测格式并正确读取它,但它不适用于下一个案例(或类似的东西):
date -d '[2009/05/11 08:27:00]'
我在阅读之前知道格式,我可以强制日期按已知格式阅读(在这种情况下)[%Y-%m-%d %H:%M:%S]
就像我在打印时那样做
date +'[%Y-%m-%d %H:%M:%S]'
答案 0 :(得分:0)
GNU date
对-d
的表单参数非常灵活,但即使其灵活性也有限制。您需要删除方括号。使用bash
:
date -d "$(sed 's/[][]//g' <<<'[2009/05/11 08:27:00]')"
或者,使用POSIX shell:
date -d "$(echo '[2009/05/11 08:27:00]' | sed 's/[][]//g')"
评论中提出了这种格式:
$ date -d '2009.05.11 07:30:00'
date: invalid date ‘2009.05.11 07:30:00’
同样,这是date
无法理解的格式。它已被更改为date
理解的内容:
$ date -d "$(sed 's|[.]|/|g' <<<'2009.05.11 07:30:00')" # (bash)
Mon May 11 07:30:00 PDT 2009