Joda-Time 날짜 사이의 날짜 계산
Joda-Time으로 작업할 때 두 날짜 사이의 날짜 차이를 확인해야 하는 경우가 많습니다. . Days.daysBetween 방법은 솔루션을 제공하지만 일광 절약 시간(DST) 조정을 항상 올바르게 처리하는 것은 아닙니다.
정확한 날짜 계산을 보장하려면 다음 접근 방식을 사용하세요.
Days.daysBetween(start.toLocalDate(), end.toLocalDate()).getDays()
이 코드는 toLocalDate()를 사용하여 시작 및 종료 DateTime 인스턴스를 LocalDate로 변환하고 시, 분, 초를 효과적으로 무시합니다.
DST 모호성이 있는 예
DST 모호성이 있는 다음 예를 고려하십시오.
// 5am on October 20th to 1pm on October 21st, 2013, Brazil DateTimeZone BRAZIL = DateTimeZone.forID("America/Sao_Paulo"); DateTime start = new DateTime(2013, 10, 20, 5, 0, 0, BRAZIL); DateTime end = new DateTime(2013, 10, 21, 13, 0, 0, BRAZIL); // Using withTimeAtStartOfDay() System.out.println(Days.daysBetween(start.withTimeAtStartOfDay(), end.withTimeAtStartOfDay()).getDays()); // Using toLocalDate() System.out.println(Days.daysBetween(start.toLocalDate(), end.toLocalDate()).getDays());
withTimeAtStartOfDay()를 사용하면 잘못된 응답이 발생합니다. 0, toLocalDate() 메서드는 올바르게 1을 반환합니다.
LocalDate로 변환하여 DST로 인한 모호성을 제거하고 보다 정확한 일수 차이를 얻습니다. 이 접근 방식은 시간대나 일광 절약 시간제 고려 사항에 관계없이 일관된 결과를 보장합니다.
위 내용은 두 Joda-Time 날짜 사이의 일수를 정확하게 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!