Java Android在比较日期时遇到问题
我的应用程序能够设置提醒,一切正常。问题在于检查提醒计划的日期是否已过。我有这个设置来比较日期。闹钟是以毫秒为单位的。即使日期已经过去,它也会说“这张便条有一个预定的提醒。”我在这里遗漏了什么Java Android在比较日期时遇到问题,java,date,Java,Date,我的应用程序能够设置提醒,一切正常。问题在于检查提醒计划的日期是否已过。我有这个设置来比较日期。闹钟是以毫秒为单位的。即使日期已经过去,它也会说“这张便条有一个预定的提醒。”我在这里遗漏了什么 Date currentcal = new Date(); Date alarmcal = new Date(); alarmcal.setTime(alarm); if (alarm != 0) { if(alar
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.");
}
}
datecurrentcal=新日期();
Date alarmcal=新日期();
alarmcal.设置时间(报警);
如果(报警!=0){
如果(报警校准比较到(当前校准)0){
删除_message.setText(“已过提醒日期”);
}
}
我想你的逻辑已经改变了。您的第一个if语句实际上是检查alarmcal是否小于当前日期,而您的else if实际上是检查alarmcal是否在未来。执行此操作
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.");
问题是您将alarmcal设置为日期,而不是相应的长值。因为两个“时钟”都是活动的,所以您的逻辑将失败。以下代码段将比当前时间提前10秒设置时间alarmcal。比较总是与一个“活时钟”相比较 此文件的打印输出将为: 293484130625 1293484124628
此便笺已安排提醒。
1293484130625 1293484126628
此便笺已安排提醒。
1293484130625 1293484128628
此便笺已安排提醒。
1293484130625 1293484130629
提醒日期已过。
1293484130625 1293484132629
提醒日期已过。
1293484130625 1293484134629
提醒日期已过
希望你能将此应用到你的android代码中你设定的时间是多少?你的意思是什么?我会在一分钟后设置一个提醒,例如,提醒将关闭,但计划提醒的文本仍将保留。警报是以毫秒为单位的时间。顺便说一句,这样做总是说提醒日期过去了=\尝试此设置
alarm=System.currentTimeInMillis()+5000
,这样您将测试逻辑是否工作。然后再次使用alarm=System.currentTimeInMillis()-5000进行测试,看看是否得到相反的结果我想我找到了问题所在。我正在将报警保存为整数类型。是否有任何方法可以在不影响数据库列类型的情况下修复此问题?
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();
}
}