我从文件中读取日期到变量。日期的格式为ddmmyyyy。它必须转换为yyyy-mm-dd 我已经搜索了这个论坛并且做到了这一点: date -d'$ DATE'+%F 问题是无法识别输入格式。有什么方法可以指定输入日期格式吗? 在另一个论坛上我发现:date -d“$ {OLD_DATE}”-D“%d%m%Y”+%F 其中-D应指定输入格式,但这不起作用。但是-D是未知的。
感谢您的帮助,对不起我的英语。
答案 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
。我不确定您是否可以强制它以不同的方式阅读它,但在这种情况下,您可以使用简单的编辑器,例如awk
或sed
:
$ OLD_DATE='08032011'
$ echo $OLD_DATE | sed -r 's/(.{2})(.{2})(.{4})/\3-\2-\1/'
2011-03-08
这适用于GNU sed
。请注意,它不会检查输入(为简洁起见)。