Depende de si está mezclando formatos o no.
En cualquier formato específico, como yyyy-mm-dd
o yyyy-Www-d
, ISO 8601 está diseñado para ordenar lexicográficamente (que no sean años negativos).
Desde el ISO 8601 wikipedia page:
Fecha y hora valores se organizan desde la más a la menos significativa: año, mes (o semana), día, hora, minuto, segundo y fracción de segundo. El orden lexicográfico de la representación corresponde, por lo tanto, al orden cronológico, a excepción de las representaciones de fecha que implican años negativos. Esto permite que las fechas se clasifiquen de forma natural, por ejemplo, mediante sistemas de archivos.
Eso significa que la ordenación de las cuerdas debería funcionar bien.
Es solo si mix formatos no funcionarán. Si ese es el caso, deberá convertir a un formato específico antes de comparar. Por eso, me refiero a algo así como convertir todos los formatos en yyyy-mm-dd
antes de comparar y luego volver luego si así lo desea.
Por ejemplo, si usted tiene los datos de entrada:
2010-03-01
2010-W01-1
que podría primero a todos ellos cambiará a:
2010-03-01:2010-03-01
2010-01-04:2010-W01-1
(anteponiendo los datos reales con una forma específica) a continuación, ordenar eso. Una vez que se haya ordenado, volverá y quitará todo hasta el primer carácter :
en cada elemento, que recuperará el formulario original.
No necesariamente la manera más eficiente pero tendrá que hacer algo así si quiere conservar el formulario original. Si eso no es un problema, simplemente conviértelos a la forma específica una vez y déjalos así.
Este es el formato de fecha: 2012-03-05 00: 30: 00.000 – alphablender
@alphablender, esa no es una fecha, es una fecha/hora :-) Pero la teoría todavía se mantiene: conviértala a una forma común para que funcione la clasificación lexicográfica, oriéntala y luego conviértela de nuevo (si es necesario). Si _todas_ sus fechas ya son de esa forma, no necesita convertir nada en absoluto; la ordenación normal de cadenas funcionará bien. – paxdiablo