在unix中转换任何日期格式

在unix中转换任何日期格式

如何将用户输入的日期转换为yyyy/mm/dd

例如,用户可以输入以下格式之一的日期201201212012-01-21、等01/21/201201/21/2012

但我需要将用户输入的任何日期转换为yyyy/mm/dd(2012/01/2012)。如何?

这是我正在使用的脚本,但它不起作用。

echo "Please enter the date: "
read X
a=$X+"%y/%m/%d"
echo $a

答案1

这里有一些方法,但要小心冲突:

[ 0:26:00 ] afsin@s15426859:~ % date --date='12/12/12'
Mi 12. Dez 00:00:00 CET 2012
[ 0:26:14 ] afsin@s15426859:~ % date --date='12/12/2012'
Mi 12. Dez 00:00:00 CET 2012
[ 0:26:24 ] afsin@s15426859:~ % date --date='2012/12/11'
Di 11. Dez 00:00:00 CET 2012
[ 0:26:37 ] afsin@s15426859:~ % date --date='2012/11/12'
Mo 12. Nov 00:00:00 CET 2012
[ 0:26:47 ] afsin@s15426859:~ % date --date='2012/11/30'
Fr 30. Nov 00:00:00 CET 2012
[ 0:27:00 ] afsin@s15426859:~ % date --date='2012-11-30'
Fr 30. Nov 00:00:00 CET 2012
[ 0:27:17 ] afsin@s15426859:~ % date --date='2012-11-12'
Mo 12. Nov 00:00:00 CET 2012
[ 0:27:24 ] afsin@s15426859:~ % date --date='2012-12-11'
Di 11. Dez 00:00:00 CET 2012

所以现在在你的脚本中使用:

date --date=$X '+%y/%m/d'

or

a=`date --date=$X '+%y/%m/d'`
echo $a

;-)

但您必须小心冲突,例如 11-11-12 2011-11-12 或 11.11.2012 ?弄清楚用户的意思很复杂;-))

相关内容