Unixのすべての日付形式を変換

Unixのすべての日付形式を変換

ユーザーが入力した日付をに変換する方法はyyyy/mm/dd

20120121たとえば、ユーザーは2012-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などの衝突に注意する必要がありますか?ユーザーが何を意味するのかを理解するのは複雑です;-))

関連情報