Я пытаюсь создать «фиксированное» время (полночь в 24-часовом формате, т. Е. 00:00:00) для установки в качестве строки для запроса SQL SELECT с использованием следующего ...
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()));
Это нормально, если текущее время - PM. Например,
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
Если я делаю это, когда текущее время между полуночью и полуднем (то есть 00:00:00 -> 11:59:59 AM), тогда мой час в отформатированной строке будет правильно установлен на 00. Если я сделаю это это в любое время после полудня и до полуночи, тогда я получаю 12 за час, а не 00.
Может кто-нибудь объяснить это и помочь мне найти решение (или альтернативный способ сделать что-то), пожалуйста?