在转换日期时提供输入格式



我将日期从文件读取到变量。日期的格式为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。我不确定你是否可以强迫它以不同的方式阅读,但在这种情况下,你可以使用一个简单的编辑器,如awksed

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

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

最新更新