2016-11-20 1 views
-1

Joda Time에서 이상한 결과가 나옵니다. 무엇이 원인인지 확실하지 않습니다.Joda Time .isAfter()가 잘못된 결과를 내고 있습니다.

사용자가 시작하기 전에 끝내기 알람을 설정하지 않도록 두 시간 (알람 종료 및 중지 시간)을 비교합니다.

저는 .isAfter()를 사용했지만 올바르지 않은 결과를 얻은 것 같습니다.

if (MainActivity.alarmStartDateTime.isAfter(MainActivity.alarmEndDateTime)) { 
       nextReminderTextView1.setText("WARNING THE ALARM END DATE & TIME IS BEFORE THE ALARM DATE & TIME"); 
       alarmSetToEndBeforeItStarts = true; 

      } 

이 시작과 끝 날짜 시간이었다 :

은 if 문입니다

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

도움 주셔서 감사합니다. –

관련 문제