Joda Time .isAfter()产生不正确的结果

时间:2016-11-20 14:39:52

标签: android jodatime android-jodatime

我从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

先谢谢你的帮助

1 个答案:

答案 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中的生命周期不小心,这很容易发生。