我的应用可以设置提醒,一切正常。问题是检查提醒计划的日期是否已通过。我有这个设置来比较日期。闹钟是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.");
}
}
答案 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代码