1

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

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

4

2 回答 2

1

你可以这样:

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

输出:

YYYY-MM-DD
于 2012-11-16T09:13:49.267 回答
1

是的,date理解很多格式-d,但是当它只有 8 个数字时,它会解释为YYYYmmdd. 我不确定您是否可以强制它以不同的方式阅读,但在这种情况下,您可以使用简单的编辑器,例如awkorsed代替:

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

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

于 2012-11-16T09:16:25.510 回答