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?

¿Fue útil?

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 ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top