Java SimpleDateFormat y compareTo
-
18-09-2019 - |
Pregunta
Tengo una pregunta acerca de la clase y el método SimpleDateFormat compareTo del java.util.Date:
Estoy construyendo un objeto Date, entonces yo formato, finalmente analizar la cadena de formato y comparar a la fecha original.
DateFormat df = new SimpleDateFormat("yyyy.MMMdd hh:mm:ss SSS");
Date originalDate = new Date();
String s = df.format(originalDate);
Date parsedDate = df.parse(s);
System.out.println("Original date: " + originalDate);
System.out.println("Formatted date: " + s);
System.out.println("originalDate compareTo parsedDate: " + originalDate.compareTo(parsedDate));
El resultado:
Fecha original: Lun Ene 25 de 15:43:23 CET 2010 Fecha con formato: 2010.jan.25 03:43:23 868 originalDate compareTo parsedDate: 1
¿Por qué estoy recibiendo siempre "1"? ¿Por qué la fecha rallador original que la fecha analizada?
Solución
Creo que es un problema relacionado 24h, la fecha original es 15, por lo que 15:00, mientras que su Analizada uno está en el formato de 12 horas, esto debido a que utiliza h especificador de formato en lugar de H especificador de formato. Usted horas después se convirtió en la cadena equivocada por lo que pierden precisión porque cuando analizado volver 03
se considera 3am. Pruebe con:
DateFormat df = new SimpleDateFormat("yyyy.MMMdd HH:mm:ss SSS");
Otros consejos
Funciona si se agrega el AM / PM marcador - a
DateFormat df = new SimpleDateFormat("yyyy.MMMdd hh:mm:ss SSS a");
Si desea simplemente comparar las fechas, tal vez usando getTime () para comparar los dos valores sería una idea mejor ...