2011-01-11 17 views
5

Esto probablemente será una pregunta tonta, pero no entiendo la función de fecha de java. Aquí hay un código:Pregunta simple sobre java SimpleDateFormat

SimpleDateFormat sdf = new SimpleDateFormat("hh:mm"); 
Date s = sdf.parse(var); 
Calendar scal = java.util.GregorianCalendar.getInstance(); 
scal.setTime(s); 
Log.w("Time: ", Long.toString(s.getTime())); 

Si var = "10:00" Me "64800000".

Si var = "11:00" obtengo "68400000".

Si var = "12:00" obtengo "28800000".

Si var = "13:00" obtengo "75600000".

Si var = "14:00" obtengo "79200000".

Si var = "00:00" obtengo "28800000".

¿Qué pasa con 12:00? ¿Por qué, cuando var = 12: 00 obtengo el mismo resultado que cuando es 00:00? Todos los demás resultados parecen correctos. Obviamente no entiendo la función de fecha de Java, pero parece que no puedo encontrar ninguna explicación para esto en ninguna parte. Esto está arruinando mi calculadora de tiempo.

+0

Su pregunta no está clara para mí. ¿Dónde estás poniendo var? Dado que está utilizando hh: mm no es tiempo militar, entonces tal vez por eso está recibiendo 00 por 12. – CoolBeans

Respuesta

12

Si desea utilizar el formato de 24 horas, es necesario utilizar el capital formato HH:

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); 
0

que debería haber utilizado "H" en lugar de "h". "h" es para el formato am/pm.