0

我从 Joda Time 得到了一些奇怪的结果,我不确定是什么原因造成的。

我正在比较两个日期时间(警报结束时间和停止时间),以确保用户没有在警报开始之前将警报设置为结束。

我使用了 is .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

提前感谢您的帮助

4

1 回答 1

1

我无法复制您的问题:

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

如果您认为isAfter(). 这是不可能的,因为 Joda 是一个具有高度测试覆盖率的谱系库,已在世界各地的许多项目中使用。

我建议改为以下内容:也许alarmSetToEndBeforeItStarts是一个类字段,并且已由先前对您引用的if语句的调用设置。如果您对 Android 中的生命周期不小心,这很容易发生。

于 2016-11-20T20:22:06.373 回答