Converta qualquer formato de data no unix

1

Como posso converter qualquer data inserida pelo usuário em yyyy/mm/dd ?

Por exemplo, o usuário pode inserir a data em um dos seguintes formatos 20120121 , 2012-01-21 , 01/21/2012 , 01/21/2012 etc.

Mas preciso converter qualquer data inserida pelo usuário em yyyy/mm/dd (2012/01/2012). Como?

Este é o script que eu estava usando, mas não está funcionando.

echo "Please enter the date: "
read X
a=$X+"%y/%m/%d"
echo $a
    
por user1570210 22.01.2013 / 23:33

1 resposta

3

aqui de algumas formas, mas tenha cuidado com os conflitos:

[ 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

agora use em seu script:

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

or

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

; -)

mas você deve ter cuidado com conflitos como 11-11-12 2011-11-12 ou 11.11.2012? Isso é complicado para descobrir o que o usuário quer dizer; -))

    
por 23.01.2013 / 00:33

Tags