转换日期时给出输入格式

时间:2012-11-16 09:03:01

标签: linux date format

我从文件中读取日期到变量。日期的格式为ddmmyyyy。它必须转换为yyyy-mm-dd 我已经搜索了这个论坛并且做到了这一点: date -d'$ DATE'+%F 问题是无法识别输入格式。有什么方法可以指定输入日期格式吗? 在另一个论坛上我发现:date -d“$ {OLD_DATE}”-D“%d%m%Y”+%F 其中-D应指定输入格式,但这不起作用。但是-D是未知的。

感谢您的帮助,对不起我的英语。

2 个答案:

答案 0 :(得分:1)

你可以这样:

echo "DDMMYYYY" | awk 'BEGIN {OFS="-"} {print substr($1,5,4), substr($1,3,2), substr($1,1,2)}'

输出:

YYYY-MM-DD

答案 1 :(得分:1)

是的,date了解-d的许多格式,但当它连续只有8位时,它会将其解释为YYYYmmdd。我不确定您是否可以强制它以不同的方式阅读它,但在这种情况下,您可以使用简单的编辑器,例如awksed

$ OLD_DATE='08032011'
$ echo $OLD_DATE | sed -r 's/(.{2})(.{2})(.{4})/\3-\2-\1/'
2011-03-08

这适用于GNU sed。请注意,它不会检查输入(为简洁起见)。