Puede comparar lexicográficamente con la construcción condicional [[ ]]
de esta manera:
[[ "2014-12-01T21:34:03+02:00" < "2014-12-01T21:35:03+02:00" ]]
Del hombre:
[[ expresión ]]
Devuelve un estado de 0 o 1 dependiendo de la evaluación de la expresión de expresión condicional.
Nueva actualización:
Si necesita comparar horas con diferentes zonas horarias, primero puede convertir esas horas de esta manera:
get_date() {
date --utc --date="$1" +"%Y-%m-%d %H:%M:%S"
}
$ get_date "2014-12-01T14:00:00+00:00"
2014-12-01 14:00:00
$ get_date "2014-12-01T12:00:00-05:00"
2014-12-01 17:00:00
$ [[ $(get_date "2014-12-01T14:00:00+00:00") < $(get_date "2014-12-01T12:00:00-05:00") ]] && echo it works
it works
Una opción sería convertir la fecha al número de segundos desde la época de UNIX:
date -d "2014-12-01T21:34:03+02:00" +%s
Luego puede comparar este número entero con otra fecha que haya sido procesada de la misma manera:
(( $(date -d "2014-12-01T21:34:03+02:00" +%s) < $(date -d "2014-12-01T21:35:03+02:00" +%s) ))
El ((
))
la sintaxis se usa para crear un contexto aritmético cuando estamos comparando dos números. También podría usar el [ ${x} -lt ${y} ]
más general sintaxis de estilo si la portabilidad es una preocupación.
Una ventaja de hacerlo de esta manera es que date
entiende una variedad de formatos, por ejemplo
date -d "next year" +%s
. Además, date
entiende las zonas horarias, por lo que puede manejar correctamente las comparaciones entre pares de fechas donde la zona horaria es diferente.
Sin embargo, si ninguno de esos problemas le preocupa, entonces optaría por la solución de j.a.