>  기사  >  Java  >  Java 시간 ----java.util.Calendar에 대한 자세한 소개

Java 시간 ----java.util.Calendar에 대한 자세한 소개

黄舟
黄舟원래의
2017-03-01 13:22:321648검색

java.util.Calendar

Java에는 여러 개의 시간 클래스가 있지만 Date가 점차 비활성화되면서 메소드가 천천히 추가됩니다. 십자가를 제거한 후 , 나머지 사용 가능한 기능은 Calendar에서 구현되었으며 Calendar의 하위 클래스 GregorianCalendar는 특수 달력 연구에 너무 심층적이므로 일반적으로 이 하위 클래스를 사용하지 않습니다. Calendar 클래스가 미래에는 주류 시간 클래스가 될 것이라고 믿습니다. Calendar 클래스의 세부 사항을 살펴보고, 잘못된 부분이 있으면 정정해 주시기 바랍니다.

(1) 인스턴스화

캘린더 클래스는 추상 클래스이므로 인스턴스화할 수 없습니다. 이 클래스가 캘린더 인스턴스를 가져오는 방법에는 두 가지가 있습니다.

  Calendar calendar = Calendar.getInstance(TimeZone zone , Locale locale);

호출. getInstance 메소드에서는 기본 Timezone 및 Locale 속성을 선택하여 Timezone 또는 Locale 매개변수를 추가하여 지리적 위치를 선택할 수도 있습니다. 두 매개변수에 대해서는 java.util.Timezone 및 java.util을 참조하세요. 로케일 패키지에서 일반적인 기본 시간은 공통 시간이므로 실제로 변경할 필요가 없습니다.

그 외에도 인스턴스화할 수 있는 메서드가 있습니다. 놀랄 일은 아니지만, 이전 Java 루틴은 인스턴스화를 위해 하위 클래스를 사용하는 것입니다. Calendar의 하위 클래스는 GregorianCalendar뿐입니다. 이는 그레고리력으로 변환되며 나중에 이 GregorianCalendar에 대해 별도로 설명하겠습니다. 두 번째 인스턴스화 방법은 다음과 같습니다.

Calendar calendar = new GregorianCalendar();


(2) 클래스 변수

캘린더의 변수는 다음과 같습니다. 기본적으로 final로 정의되는 변수에는 연, 월, 시, 오전, 오후 등 모든 시간 내용이 포함됩니다. Baidu에서 많이 찾았습니다. 이런 구체적인 방법을 사용하려면 API를 살펴보는 것이 가장 좋습니다. 여기에 간단히 사본을 붙여넣겠습니다.

calendar.get(Calendar.YEAR);  
calendar.get(Calendar.MONTH); 
// 月份从0开始 calendar.get(Calendar.DAY_OF_MONTH);   
calendar.get(Calendar.DAY_OF_WEEK);  
calendar.get(Calendar.WEEK_OF_YEAR);  
calendar.get(Calendar.WEEK_OF_MONTH);  
calendar.get(Calendar.HOUR);        
// 12小时calendar.get(Calendar.HOUR_OF_DAY); 
// 24小时 calendar.get(Calendar.MINUTE);  
calendar.get(Calendar.SECOND);  
calendar.get(Calendar.MILLISECOND);

이 값은 ​​​​모두 jdk 소스 코드의 최종 변수입니다. int 정적 최종 수정은 이러한 변수가 int 유형의 초기 값을 갖는다는 것을 의미합니다. 실제로 이러한 변수는 일부 함수가 매개변수를 전달할 때 범위 판단으로 Calendar 클래스에서 순차적으로 번호가 지정됩니다. 그러면 다음 코드와 같이 실수로 이런 상황이 발생할 수 있습니다.

System.out.println(Calendar.DAY_OF_MOUTH);

오늘이 이번 달 5일은 아니지만 출력은 5입니다. 사실 이는 실수입니다. 이 클래스에서 출력하는 것은 DAY_OF_MOUTH의 초기값 5입니다. 이번 달의 날짜를 표현하려면 클래스 인스턴스를 객체로 내보내야 하는데, 클래스의 변수를 직접 클릭할 수도 있습니다. 이런 종류의 오류는 매우 일반적입니다. get() 메소드를 사용하여 올바른 메소드를 얻어야 합니다(캘린더는 인스턴스의 객체입니다):

System.out.println(calendar.get(Calendar.DAY_OF_MOUTH));

(3) CompareTo() after() before() 함수

compareTo( Calendar othercalendar )는 int 값을 반환합니다. 객체의 시간이 매개변수 time 이후이면 0보다 큰 숫자를 반환하고, 그렇지 않으면 0보다 작은 숫자를 반환합니다. 특히, 시간이 동일하면 반환합니다. 0. 이 메소드의 구현은 밀리초를 직접 반환할 수 있다고 생각합니다. 차이를 만들고(내 추측이 맞는 것 같습니다...) 밀리초 단위의 차이를 반환 값으로 사용할 수 있습니다.
After(Calendar othercalendar), before(Calendar othercalendar)도 이 두 함수는 부울 값을 반환합니다. after() 함수는 시간이 매개변수 이후이면 양수 값을 반환하고, before()는 () 함수는 시간이 매개변수 이후인 경우 양수 값을 반환합니다. 이전에는 양수 값을 반환했습니다.

Calendar calendar = Calendar.getInstance();
Calendar calendarother = Calendar.getInstance();
calendarother.add(Calendar.DATE, -20);
if(calendar.after(calendarother))
    System.out.println("after");calendarother.add(Calendar.DATE, 100);if(calendar.before(calendarother))
    System.out.println("before");if(calendar.compareTo(calendarother)>0)
        System.out.println(calendar.getTime()+">"+calendarother.getTime());

의 출력 결과는 다음과 같습니다.

after 

  before 

  Sun Jan 11 21:19:49 GMT+08:00 1970>Thu Jan 01 00:00:00 GMT+08:00 1970


(4) get() add() set() setTime() function

위의 예에서 add(int field, int amount) 함수가 나타납니다. 이 함수는 첫 번째 매개변수의 값을 더하고 빼서 달력에서 해당 항목을 수정할 수 있습니다. 엔터티.값. set() 메소드에는 매개변수를 입력하는 방법이 여러 가지 있는데, 이는 서면으로 이해하면 됩니다. setTime() 함수는 Date 객체를 여기에 넣고 Date에 따라 설정된 달력을 반환합니다. 또 한 가지 특별한 점은 월이 0부터 시작한다는 것입니다. 월을 0으로 설정하면 실제로는 1월을 의미하고, 1로 설정하면 실제로는 2월을 의미합니다. 주의 첫 번째 날은 일요일이고, 7일은 토요일입니다.

Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -1);
System.out.println(calendar.getTime());
//输出的日期是当前日期的前一天,其他所有的都不变

(5) getTime()clear() isSet() 함수

getTime() 함수는 아마도 다음 형식으로 시간을 반환합니다.

일 1월 11일 21:19:49 GMT+08:00 1970

시간 형식 지정 방법을 사용하여 원하는 대로 변경할 수 있습니다. 자세한 내용은 내 다른 블로그를 참조하세요. Clear() 함수는 매개 변수 없이 객체의 모든 변수를 삭제합니다. 삭제 후의 시간은 바로 원래 형태로 돌아가며

Thu Jan 01 00:00:00 GMT+ 08:00 1970

clear()에는 int 필드 매개변수를 추가할 수도 있습니다. 즉, 이 값만 지워집니다.

calendar.clear(Calendar.YEAR);System.out.println(calendar.getTime());

上述代码最后显示的年份是1970年(不可能清除成0000年…),其他的也可以以此类推。
isSet()方法确定日历字段是否已经设置了一个值,有些值会因为get方法触发计算而被设置,很多的时候,只要进行了初始化,很多值已经被设置了,但是作为一个boolean返回值的函数,检测的时候我们相信还是会起到作用的。

if(calendar.isSet(Calendar.DATE))

(六) 总结

Calendar类正如其名,可以实现一个日历,对其进行操作且功能较为完整。如果你只是需要一个时间,这个类并不一定比new Date()能快多少,但是对于一些细节的操作,还是有很多值得我们学习的地方。

 以上就是java时间----java.util.Calendar的详细介绍的内容,更多相关内容请关注PHP中文网(www.php.cn)!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.