次を使用して SQL SELECT クエリの文字列として設定する「固定」時間 (24 時間制の午前 0 時、つまり 00:00:00) を作成しようとしています...
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()));
現在の時刻が午後でない限り、これで問題ありません。例えば、
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
現在の時刻が午前 0 時から正午の間 (つまり、00:00:00 -> 11:59:59 AM) にこれを行うと、書式設定された文字列の時間は正しく 00 に設定されます。正午から真夜中までの時間は、00 ではなく 12 を取得します。
誰かがこれを説明して、修正(または物事を行う別の方法)を見つけるのを手伝ってもらえますか?