Question

Je suis en train de créer un temps « fixe » (de minuit au format d'horloge de 24 heures, c.-à-00:00:00) à définir comme une chaîne pour une requête SQL SELECT en utilisant la suit ...

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()));

Ceci est bien, sauf l'heure actuelle est PM. Par exemple,

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 je le fais quand l'heure est entre minuit et midi, (c.-à 00:00:00 -> 11:59:59 AM) puis mon heure dans la chaîne formatée est réglée sur 00. correctement Si je à tout moment après midi et avant minuit je reçois pour mon 12 heures et non 00.

Quelqu'un peut-il expliquer cela et me aider à trouver une solution (ou autre façon de faire les choses) s'il vous plaît?

Était-ce utile?

La solution

Vous devez définir HOUR_OF_DAY à 0 au lieu de HOUR

todayDate.set(Calendar.HOUR_OF_DAY, 0);

De l'API docs :

HOUR Numéro de champ pour get et set indiquant l'heure du matin ou après-midi. HEURE est utilisé pour l'horloge de 12 heures (0-11). Midi et minuit sont représentés par 0, et non par 12. Par ex, à 10: 04. 15.250 PM l'heure est 10

HOUR_OF_DAY Numéro de champ pour get et set indiquant l'heure de la journée. HOUR_OF_DAY est utilisé pour l'horloge de 24 heures. Par exemple, à 10: 04. 15.250 PM le HOUR_OF_DAY est 22

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top