Java Android Проблемы со сравнением дат - PullRequest
0 голосов
/ 27 декабря 2010

Мое приложение имеет возможность устанавливать напоминания, и все это прекрасно работает.Проблема заключается в проверке того, прошла ли дата, на которую запланировано напоминание.У меня есть эта настройка для сравнения дат.Тревога по времени.Даже если дата истекла, в ней написано: «На эту заметку запланировано напоминание».Что мне здесь не хватает?

        Date currentcal = new Date();
        Date alarmcal = new Date(); 
        alarmcal.setTime(alarm);
        if (alarm != 0) {
            if(alarmcal.compareTo(currentcal)<0) {
                delete_message.setText("This note has a reminder scheduled.");   
            } else if (alarmcal.compareTo(currentcal)>0) {
                delete_message.setText("Reminder date passed.");            
            }                   
        }     

Ответы [ 3 ]

1 голос
/ 27 декабря 2010

Я думаю, у вас переключена логика. Ваш первый оператор if на самом деле проверяет, является ли alarmcal меньше текущей даты, а ваш оператор if на самом деле проверяет, находится ли alarmcal в будущем.

0 голосов
/ 28 декабря 2010

Проблема в том, что вы устанавливаете alarmcal как Date, а не соответствующее длинное значение.Поскольку оба «часа» живы, ваша логика не удастся.Следующий фрагмент установит тревожное время на 10 секунд раньше текущего времени.Сравнение всегда будет с «живыми часами».

long alarmcal = new Date().getTime() + 10 * 1000; // add 10 seconds from current time
    while (true) {
        try {
            Thread.sleep(2000);
            System.out.println(alarmcal + " " + new Date().getTime());              
            if (alarmcal >= new Date().getTime()) {
                System.out.println("This note has a reminder scheduled.");
            } else {
                System.out.println("Reminder date passed.");
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

Распечатка этого будет:

293484130625 1293484124628
Для этой заметки запланировано напоминание.
1293484130625 1293484126628
Для этой заметки запланировано напоминание.
1293484130625 1293484128628
Для этой заметки запланировано напоминание.
1293484130625 1293484130629
Дата напоминания пройдена.
1293484130625 1293484132629
Дата напоминания пройдена
1293484130625

Надеюсь, вы сможете перенести это на свой код Android

0 голосов
/ 27 декабря 2010

Сделай это

       if(alarmcal.before(new Date()))
             delete_message.setText("Reminder date passed."); 
       else
             delete_message.setText("This note has a reminder scheduled.");

Надеюсь, вы правильно установили alarmcal.setTime.


ОК, поэтому приведенный выше код работает. Вы можете установить время неправильно. смотри здесь

   Date alarmcal = new Date();
   //alarmcal.setTime(System.currentTimeMillis() - 5000); //print date passed
alarmcal.setTime(System.currentTimeMillis() + 5000); //prints reminder scheduled
   if(alarmcal.before(new Date()))
         System.out.println("Reminder date passed."); 
   else
       System.out.println("This note has a reminder scheduled.");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...