Dada uma data e hora em um formato que não é reconhecido por date
, como posso date
reconhecer a data e a hora?
Por exemplo:
$ date -d "09SEP2012:23:58:46"
date: invalid date `09SEP2012:23:58:46'
$ date -d "09SEP2012:23:58:46" --magic-option "ddMMMYYY:hh:mm:ss"
Sun Sep 9 23:58:46 MDT 2012
Existe --magic-option
? Caso contrário, existe uma maneira mais elegante de resolver isso em vez de usar sed
para transformar a entrada em uma sequência de datas bem formada?
Respostas:
Nem a data POSIX nem a GNU têm
--magic-option
. O FreeBSD chama isso-f
(com uma sintaxe semelhante aosdate
especificadores de formato de saída, e não a que você propõe).Sua data está muito perto de ser reconhecida pela data do GNU: basta substituir os dois pontos que separam a data da hora por um espaço.
fonte
01/02/03
.Eu escrevi um monte de ferramentas ( dateutils ) que lidam com datas e horas de uma maneira mais amigável ao script. Sua opção mágica existe
--input-format|-i
, por exemplo:Embora
dconv
não suporte diretamentedate
o formato de saída (não confereTZ
nada no ambiente), há uma ferramentastrptime
no dateutils que suporta o%Z
especificador de formato.fonte