Java 1.5 캘린더#비교 () 혼란
-
22-08-2019 - |
문제
좋아, 나는 공식적으로 이것에 혼란스러워한다. 과거, 현재 또는 미래에 있는지 확인하고 싶은 GregorianCalendar 객체가 있습니다. 지금까지 캘린더#비교 문서는 나에게 혼란 스럽습니다. 간단한 테스트 클래스는 내 문제를 설명합니다.
import java.util.Calendar;
import java.util.GregorianCalendar;
public class MyCal
{
public static void main( String[] args )
{
GregorianCalendar datePast = new GregorianCalendar();
datePast.add(Calendar.MONTH, -6); // subtract 6 months
GregorianCalendar datePresent = new GregorianCalendar();
GregorianCalendar dateFuture = new GregorianCalendar();
datePast.add(Calendar.MONTH, 6); // add 6 months
System.out.println("compare datePresent to datePast: "+datePresent.compareTo(datePast));
System.out.println("compare datePresent to datePresent: "+datePresent.compareTo(datePresent));
System.out.println("compare datePresent to dateFuture: "+datePresent.compareTo(dateFuture));
}
}
그리고 출력 :
compare datePresent to datePast: 1
compare datePresent to datePresent: 0
compare datePresent to dateFuture: 0
비교에 대한 나의 이해는 마지막 줄은 -1이어야한다는 것입니다. 누구든지 내가 뭘 잘못하고 있는지 말해 줄 수 있습니까?
해결책
6 개월을 추가했습니다 datePast
, 아니다 dateFuture
. 작업 코드는 다음과 같습니다.
import java.util.Calendar;
import java.util.GregorianCalendar;
public class MyCal
{
public static void main( String[] args )
{
GregorianCalendar datePast = new GregorianCalendar();
datePast.add(Calendar.MONTH, -6); // subtract 6 months
GregorianCalendar datePresent = new GregorianCalendar();
GregorianCalendar dateFuture = new GregorianCalendar();
dateFuture.add(Calendar.MONTH, 6); // add 6 months
System.out.println("compare datePresent to datePast: "+datePresent.compareTo(datePast));
System.out.println("compare datePresent to datePresent: "+datePresent.compareTo(datePresent));
System.out.println("compare datePresent to dateFuture: "+datePresent.compareTo(dateFuture));
}
}
당신의 결과는 일관되지 않았을 것입니다 때때로 dateFuture
늦을 것입니다 datePresent
, 내부 시계가 "진드기"시기에 따라.
이 모든 것 외에도 표준 Java 날짜 및 시간 조언을 제공 할 수는 없습니다. 조다 시간 대신에. 많은 유형이 불변이 불가능하다는 사실이 도움이되었지만이 특정 문제에 대해 책임을지지 않습니다. 그러나 일반적으로 그것은 a입니다 많이 더 나은 도서관.
제휴하지 않습니다 StackOverflow