Dada una fecha y hora en un formato que no es reconocido por date
, ¿cómo puedo llegar date
a reconocer la fecha y la hora?
Por ejemplo:
$ 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
? Si no, ¿hay una manera más elegante de resolver esto en lugar de usar sed
para transformar la entrada en una cadena de fecha bien formada?
Respuestas:
Ni POSIX ni GNU tienen fecha
--magic-option
. FreeBSD lo llama-f
(con una sintaxis similar adate
la de los especificadores de formato de salida, no la que usted propone).Su fecha está muy cerca de ser reconocida por la fecha GNU: todo lo que se necesita es reemplazar los dos puntos que separan la fecha del tiempo por un espacio.
fuente
01/02/03
.Escribí un montón de herramientas ( dateutils ) que tratan las fechas y horas de una manera más amigable con los scripts. Su opción mágica es
--input-format|-i
, por ejemplo:Si bien
dconv
no admite directamentedate
el formato de salida (no confiereTZ
ni nada en el entorno), hay una herramientastrptime
en dateutils que admite el%Z
especificador de formato.fuente