Gregoriancalendar / Kalender und Festlegen der Stunde Feld Seltsamkeit
-
26-10-2019 - |
Frage
Ich versuche, eine "feste" Zeit (Mitternacht im 24 -Stunden -Taktformat, dh 00:00:00) zu erstellen, um als Zeichenfolge für eine SQL -Auswahlabfrage mit den folgenden ...
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()));
Dies ist in Ordnung, es sei denn, die aktuelle Zeit ist PM. Zum Beispiel,
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
Wenn ich dies tue, wenn die aktuelle Zeit zwischen Mitternacht und Mittag (dh 00:00:00 -> 11:59:59 Uhr) ist Zeit nach Mittag und vor Mitternacht bekomme ich 12 für meine Stunde und nicht 00.
Kann jemand dies erklären und mir helfen, bitte eine Lösung (oder eine alternative Art, Dinge) zu finden?
Lösung
Sie müssen einstellen HOUR_OF_DAY
zu 0
Anstatt von HOUR
todayDate.set(Calendar.HOUR_OF_DAY, 0);
Aus der API Dokumente:
HOUR
Feldnummer für Get und Setzen Sie die Stunde des Morgens oder Nachmittags an. Die Stunde wird für die 12 -Stunden -Uhr (0 - 11) verwendet. Mittag und Mitternacht sind durch 0, nicht durch 12. z. B. um 10: 04: 15.250 pm Die Stunde ist 10.
HOUR_OF_DAY
Feldnummer für GET und Setzen Sie die Stunde des Tages an. Hour_of_day wird für die 24-Stunden-Uhr verwendet. ZB um 10: 04: 15.250 pm Der Hour_OF_Day ist 22.