Posso converter uma data no formato AAAAMMDDHHMM usando a data?

1

Eu tenho uma data do formato YYYYMMDDHHMM. Por exemplo, 201607131001 seria 10:01 AM July 13, 2016 . Existe alguma maneira eu posso usar o utilitário date para formatar o timestamp?

    
por Jeremy 19.07.2016 / 17:24

2 respostas

9

Supondo que você tenha data do GNU, precisamos adicionar um espaço entre a data e a hora e passá-lo com -d

$ date -d "20160713 1001"
Wed Jul 13 10:01:00 EDT 2016

Podemos dividir isso facilmente com expansões de parâmetros. por exemplo

$ d=201607131001
$ date -d "${d%????} ${d#????????}"
Wed Jul 13 10:01:00 EDT 2016

Você pode usar as strings de formatação padrão + para obtê-lo no formato desejado ( man date explica todas as opções).

$ d=201607131001
$ date -d "${d%????} ${d#????????}" +"%I:%M %p %B %d, %Y"
10:01 AM July 13, 2016
    
por 19.07.2016 / 17:34
4

com zsh :

zmodload zsh/datetime
strftime -s t -r %Y%m%d%H%M 201607131001
LC_ALL=C strftime '%I:%M %p %B %d, %Y' $t

Com busybox date :

date -D %Y%m%d%H%M -d 201607131001 +'%I:%M %p %B %d, %Y'

Com AT & T ast-aberto date :

date -p %Y%m%d%H%M -d 201607131001 +'%I:%M %p %B %d, %Y'

com BSD date :

date -jf %Y%m%d%H%M +'%I:%M %p %B %d, %Y' 201607131001

com ksh93 :

printf '%(%I:%M %p %B %d, %Y)T\n' 201607131001
    
por 19.07.2016 / 18:07

Tags