Como converter de um formato de data para outro formato?

8

Eu tenho um problema com o meu formato de data. Eu quero mudar de um formato para o outro e vice-versa. Meus formatos de data são

Formato 1

YYYY-MM-DD

Formato 2

MM/DD/YYYY

Eu quero alterar o formato 1 para o formato 2 e o formato 2 para o formato 1.

    
por AiB 05.09.2013 / 20:49

4 respostas

10

Use o GNU 'date' para isso. Ele também irá converter entre outros formatos para você (veja date --help para a lista de formatos).

$ date -d 2013-07-05 +%m/%d/%Y
07/05/2013
$ date -d 07/05/2013 +%F
2013-07-05
    
por 05.09.2013 / 20:59
6

Supondo que você tenha datas no formato de texto que precisam ser convertidas

echo '2013-12-13' | awk -v FS=- -v OFS=/ '{print $2,$3,$1}'

e vice-versa

echo '12/13/2013' | awk -v FS=/ -v OFS=- '{print $3,$1,$2}'
    
por 05.09.2013 / 20:53
3
$ echo YYYY-MM-DD | { IFS=- read y m d && echo "$m/$d/$y"; }
MM/DD/YYYY

Se você tiver um arquivo com muitas dessas datas, uma por linha:

awk -F- -vOFS=/ '{print $2,$3,$1}' < that-file
    
por 05.09.2013 / 22:18
0

Usando o sed da seguinte forma:

$ echo '2013-12-13' | sed -r 's/([[:digit:]]{2,4})-([[:digit:]]{1,2})-([[:digit:]]{1,2})/\/\//g'
12/13/2013
$ echo '12/13/2013' | sed -r 's/([[:digit:]]{1,2})\/([[:digit:]]{1,2})\/([[:digit:]]{2,4})/--/g'
2013-12-13
    
por 25.09.2018 / 07:40