2016-11-20 7 views
-1

Joda Timeからいくつかの奇妙な結果が出ていますが、何が原因なのか分かりません。Joda Time .isAfter()不正な結果を生成します

私は2つのdatetimes(アラーム終了と停止時間)を比較して、ユーザが開始前にアラームを終了させないようにします。

私は.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

助けてくれてありがとう –

関連する問題