我从文件中读取日期到变量中。日期的格式为 ddmmyyyy。它必须转换为 yyyy-mm-dd 我已经搜索了这个论坛并得到了这个: date -d '$DATE' +%F 问题是输入格式无法识别。有什么方法可以指定输入日期格式吗?在另一个论坛上,我发现: date -d "${OLD_DATE}" -D "%d%m%Y" +%F 其中 -D 应该指定输入格式,但这不起作用。但是 -D 是未知的。
感谢您的帮助,对不起我的英语。
你可以这样:
echo "DDMMYYYY" | awk 'BEGIN {OFS="-"} {print substr($1,5,4), substr($1,3,2), substr($1,1,2)}'
输出:
YYYY-MM-DD
是的,date
理解很多格式-d
,但是当它只有 8 个数字时,它会解释为YYYYmmdd
. 我不确定您是否可以强制它以不同的方式阅读,但在这种情况下,您可以使用简单的编辑器,例如awk
orsed
代替:
$ OLD_DATE='08032011'
$ echo $OLD_DATE | sed -r 's/(.{2})(.{2})(.{4})/\3-\2-\1/'
2011-03-08
这将适用于GNU sed
. 请注意,它不检查输入(为简洁起见)。