Bash:按特定格式读取日期

时间:2016-05-20 01:38:57

标签: bash date

我试图用已知格式读取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]'

1 个答案:

答案 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