2011-01-28 8 views
6

Estoy intentando crear una hora 'fija' (medianoche en formato de reloj de 24 horas, es decir, 00:00:00) para establecer como una cadena para una consulta SQL SELECT usando el siguiente ...GregorianCalendar/Calendar y establecer el campo HOUR oddity

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 

GregorianCalendar todayDate = new GregorianCalendar(); 
Log.d(TAG, "todayDate: " + todayDate.getTime().toString()); 
Log.d(TAG, "formatted todayDate: " + sdf.format(todayDate.getTime())); 
todayDate.clear(Calendar.HOUR); 
todayDate.clear(Calendar.MINUTE); 
todayDate.clear(Calendar.SECOND); 
todayDate.set(Calendar.HOUR, 0); 
todayDate.set(Calendar.MINUTE, 0); 
todayDate.set(Calendar.SECOND, 0); 
Log.d(TAG, "formatted modified todayDate: " + sdf.format(todayDate.getTime())); 

Esto está bien A MENOS QUE el tiempo actual sea PM. Por ejemplo,

todayDate: Fri Jan 28 23:34:34 GMT 2011 
formatted todayDate: 2011-01-28 23:34:34 
formatted modified todayDate: 2011-01-28 12:00:00 <- THE hour is 12 not 00 

Si hago esto cuando llegue el momento actual se encuentra entre la medianoche y el mediodía, (es decir, 00:00:00 -> 11:59:59 AM) entonces mi hora en la cadena con formato es correcta establece en 00. Si lo hago en cualquier momento después del mediodía y antes de la medianoche cuando me siento para mi 12 horas y no 00.

¿alguien puede explicar esto y me ayude a encontrar una solución (o forma alternativa de hacer las cosas) por favor ?

Respuesta

11

Es necesario configurar HOUR_OF_DAY a 0 en lugar de HOUR

todayDate.set(Calendar.HOUR_OF_DAY, 0); 

De la API docs: número

HOUR de campo para get y set indicando la hora de la mañana o por la tarde . HOUR se usa para el reloj de 12 horas (0 - 11). El mediodía y la medianoche están representados por 0, no por 12. Por ejemplo, a las 10: 04: 15.250 PM la HORA es 10.

HOUR_OF_DAY Número de campo para obtener y establecer la hora del día. HOUR_OF_DAY se usa para el reloj de 24 horas. Por ejemplo, a las 10: 04: 15.250 PM el HOUR_OF_DAY es 22.

+0

Aaargh! No puedo creer que fuera así de simple. Gracias. – Squonk

+0

No se preocupe ... :) – armandino

Cuestiones relacionadas