0

Joda Time から奇妙な結果が得られますが、何が原因なのかわかりません。

2 つの日時 (アラームの終了時刻と停止時刻) を比較して、ユーザーがアラームを開始前に終了するように設定しないようにしています。

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 に答える