如何在 Unix 命令行中将格式为 MMDDYYYY 的日期字符串转换为 YYYY-MM-DD?

How do I convert a date string in format MMDDYYYY to YYYY-MM-DD at the Unix command line?

如何从 Unix 命令行将 MMDDYYYY 格式的日期字符串转换为 YYYY-MM-DD 格式?例如,如何将 02032017 转换为 2017-02-03?谢谢!

我已经试过了,但恐怕行不通。

date -d "02032017"

这会产生此错误消息。

date: invalid date ‘02032017’

带变量扩展的字符串操作

input_date=02032017
output_date=${input_date:4}-${input_date::2}-${input_date:2:2}

这应该可以,

DATE="02032017"; date -d"$DATE" +%Y-%m-%d

以上回答有误。

试试这个

month=$(cut -c 1-2)
date=$(cut -c 3-4)
year=$(cut -c 5-8)
date=$year-$month-$date
echo $date

您可以使用允许您指定传入日期格式的日期库,例如 perl 的 Time::Piece:

input_date=02032017
perl -MTime::Piece -sE 'say Time::Piece->strptime($date, "%m%d%Y")->ymd' -- -date="$input_date"
2017-02-03