2016-11-20 63 views
-1

我得到了喬達時間的一些奇怪的結果,我不知道是什麼導致它。Joda時間.isAfter()產生不正確的結果

我正在比較兩個日期時間(鬧鐘結束時間和停止時間),以確保用戶在鬧鐘開始前沒有設置鬧鐘。

我用的是.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

我不能複製你的問題:

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中的生命週期,這很容易發生。

+0

好的謝謝你的幫助 –