我从Joda Time得到一些奇怪的结果,我不确定是什么导致它。
我正在比较两个日期时间(警报结束和停止时间),以确保用户在启动之前不设置警报。
我使用的是.isAfter(),但它似乎给了我一个不正确的结果。
这是if语句:
if (MainActivity.alarmStartDateTime.isAfter(MainActivity.alarmEndDateTime)) {
nextReminderTextView1.setText("WARNING THE ALARM END DATE & TIME IS BEFORE THE ALARM DATE & TIME");
alarmSetToEndBeforeItStarts = true;
}
这是开始和结束日期时间:
MainActivity.alarmStartDateTime = 2016-11-21T00:26:45.183+10:00
MainActivity.alarmEndDateTime = 2016-11-21T00:30:00.000+10:00
这就是结果:
alarmSetToEndBeforeItStarts = true
先谢谢你的帮助
答案 0 :(得分:1)
我无法复制你的问题:
created workspace 'unique_workspace_2016-11-20-21-12-30'
added block 'block_1Z1B38XS'
"Jill" 10000000044
"Joe" 10000000046
deleted workspace 'unique_workspace_2016-11-20-21-12-30'
具有以下输出:
DateTime alarmStart = DateTime.parse("2016-11-21T00:26:45.183+10:00");
DateTime alarmEnd = DateTime.parse("2016-11-21T00:30:00.000+10:00");
System.out.println(alarmStart.isAfter(alarmEnd));
如果您认为false
中存在错误,则需要发布最小测试以复制问题。由于Joda是一个在全球许多项目中都使用高度测试覆盖率的谱系库,所以极不太可能。
我建议使用以下内容:或许isAfter()
是一个类字段,并且是通过之前调用引用的alarmSetToEndBeforeItStarts
语句设置的。如果你对Android中的生命周期不小心,这很容易发生。