Calendar.before ()и Calendar.after ()возвращают неверные значения

Я немного застрял со сравнением дат в Java/Android

            DateFormat df = new SimpleDateFormat("dd/MM/yy HH:mm");
                Calendar now = Calendar.getInstance();
                Calendar c;

                c = Calendar.getInstance();
                c.set(settings.getInt("year", 0), settings.getInt("month", 0), settings.getInt("day", 0), settings.getInt("hour", 0), settings.getInt("minute", 0));

                views.setTextViewText(R.id.textView4, String.valueOf(c.getTime().before(now.getTime())));
                views.setTextViewText(R.id.textView2, String.format("%s - %s", df.format(c.getTime()), df.format(now.getTime())));

                int timeout = 0;
                while( c.getTime().before(now.getTime()) )
                {
                    c.add(Calendar.SECOND, 30);
                    c.add(Calendar.MINUTE, 12);
                    c.add(Calendar.HOUR_OF_DAY, 6);
                    isHigh = 1 - isHigh;
                    timeout++;
                    if( timeout >= 400 )
                        break;
                }
                views.setTextViewText(R.id.textView5, String.valueOf(c.getTime().before(now.getTime())));
                views.setTextViewText(R.id.textView3, String.format("%s - %s", df.format(c.getTime()), df.format(now.getTime())));

Идея этого заключается в том, что он берет начальную дату из сохраненных настроек и добавляет 6 :12 :30 к часам, пока не пройдет текущее время.

Однако мои текстовые поля дают мне следующее:

false : 09/07/12 04:20 - 11/08/12 00:00

false : 09/07/12 04:20 - 11/08/12 00:00

Почему 9 июля 2012 года возвращает false при вызове «до (11 августа 2012 года )»?

Если я изменю ".before" на ".after", я получу это:

true : 09/07/12 04:20 - 11/08/12 00:00

true : 20/10/12 15:40 - 11/08/12 00:00

Что, кажется, не имеет никакого смысла.

Любые идеи, что я делаю неправильно? Спасибо

5
задан Jesper Rønn-Jensen 16 May 2015 в 06:52
поделиться