문제

좋아, 나는 공식적으로 이것에 혼란스러워한다. 과거, 현재 또는 미래에 있는지 확인하고 싶은 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입니다 많이 더 나은 도서관.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top