Java Android麻烦比较日期

时间:2010-12-27 19:56:31

标签: java date

我的应用可以设置提醒,一切正常。问题是检查提醒计划的日期是否已通过。我有这个设置来比较日期。闹钟是timeinmillis。即使日期已经过去,它也会说“这张便条已经安排了提醒”。我在这里缺少什么?

        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 个答案:

答案 0 :(得分:1)

我认为你的逻辑已经切换了。你的第一个if语句实际上是检查alarmcal是否小于当前日期,而你的其他人是否实际检查警报是否在将来。

答案 1 :(得分:0)

这样做

       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.");

答案 2 :(得分:0)

问题在于您将alarmcal设置为Date,而不是相应的long值。由于两个“时钟”都处于活动状态,您的逻辑将失败。以下代码段将在当前时间之前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 1293484134629
提醒日期已过。

希望你能将这个用于你的android代码