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

Bash 如何在Unix命令行中将格式为MMDDYYYY的日期字符串转换为YYYY-MM-DD?,bash,date,parsing,unix,data-conversion,Bash,Date,Parsing,Unix,Data Conversion,在Unix命令行中,如何将格式为MMDDYYYY的日期字符串转换为格式为YYYY-MM-DD?例如,如何将020317转换为2017-02-03?谢谢 我试过这个,但恐怕不行 日期-d“020317” 这将产生此错误消息 日期:无效日期“020327” 带变量扩展的字符串操作 input_date=02032017 output_date=${input_date:4}-${input_date::2}-${input_date:2:2} 这应该行得通 DATE="02032017

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

我试过这个,但恐怕不行

日期-d“020317”
这将产生此错误消息

日期:无效日期“020327”

带变量扩展的字符串操作

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:

input_date=020312017
perl-MTime::Piece-sE'say Time::Piece->strtime($date,“%m%d%Y”)->ymd'--date=“$input\u date”
2017-02-03

欢迎使用堆栈溢出。请在问题中添加您自己的代码。你至少要展示你自己为解决这个问题所做的研究。嗯,恐怕不行。这将产生以下消息:日期:无效日期“020327”酷!这很有效。我在想,
date
可以转换这个,因为它可以转换很多其他格式,但是如果不能,我会接受这个Bash答案。