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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top