자바 시간, 자바.util.Calendar 심층 분석

5286 단어 java시간Calendar
java.util.Calendar
자바에서 시간의 클래스는 몇 가지가 있지만 Date가 점점 비활성화되면서 그 중의 방법은 천천히 포크 번호를 매겼고 사용할 수 있는 함수는 Calendar에서 모두 실현되었다. 그리고 Calendar의 하위 클래스인 GregorianCalendar는 특수 달력에 대한 연구에 너무 깊이 들어가 평소에 우리는 이 하위 클래스를 사용하지 않는다.우리는 Calendar 클래스가 이후의 주류 시간 클래스가 될 것이라고 믿을 수 있습니다. 다음은 Calendar 클래스의 상세한 내용을 함께 보겠습니다. 오류가 있으면 여러분의 지적을 환영합니다.
(1) 실례화
Calendar 클래스는 추상적인 클래스로 실례화할 수 없습니다. 그러면 이 클래스가 달력의 실례를 얻는 방법은 다음과 같습니다.

 Calendar calendar = Calendar.getInstance(TimeZone zone , Locale locale); 
getInstance 방법을 호출하여 기본 Timezone과 Locale 속성을 선택하여 달력을 되돌려줍니다. 그 중에서 파라미터인 Timezone이나 Locale를 추가하여 지역 장소를 선택할 수 있습니다. 구체적인 파라미터는java를 보러 가야 합니다.util.Timezone,java.util.Locale 이 두 패키지는 일반적인 기본 시간이 공용 시간인 만큼 변경할 필요가 없습니다.
그 외에 실례화할 수 있는 방법이 하나 더 있다.희한한 것은 없다. 자바의 낡은 방식은 자류로 실례화된다.Calendar의 자류는 단 하나입니다. - Gregorian Calendar, 번역하면 달력이라는 뜻입니다. 이 Gregorian Calendar는 앞으로 단독으로 이야기할 것입니다.실례화된 두 번째 방법은 다음과 같다.

Calendar calendar = new GregorianCalendar();
(2) 클래스 변수
Calendar에서 변수는 기본적으로final로 한정됩니다. 이 변수들은 년도, 월, 시간, 오전 등 모든 시간 내용을 포함합니다.바이두에서 한 무더기를 찾았는데 이런 구체적인 용도는 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의 원본 코드에서final 변수입니다. intstaticfinal 수식이라면 이 변수들은 모두 int 형식의 초기 값이 있다는 것을 설명합니다.그렇습니다. Calendar 클래스에서 이 변수들을 순서대로 번호를 매기고 일부 함수가 매개 변수에 전달될 때의 범위 판단입니다.다음 코드와 같이 실수로 이러한 상황이 발생할 수 있습니다.

System.out.println(Calendar.DAY_OF_MOUTH);
비록 오늘이 이번 달의 5일은 아니지만, 수출은 5이다.이것은 사실 오류입니다. 사실 당신이 출력한 것은 이 종류의 DAY_OF_MOUTH의 초기값 5. 현재 달의 날짜를 표시하려면 클래스의 실례를 대상에서 꺼내야 하지만, 클래스의 변수가 직접 눌러질 수 있는 클래스에서 이런 오류가 발생하는 것은 매우 흔하다.올바른 방법은 get () 방법으로 가져와야 합니다. (calendar는 우리의 실례적인 대상입니다.)

System.out.println(calendar.get(Calendar.DAY_OF_MOUTH));
(3) compareTo () after () before () 함수
compareTo(Calendar othercalendar)는 int 값을 되돌려줍니다. 만약에 대상의 시간이 매개 변수 시간 다음에 0보다 큰 숫자를 되돌려줍니다. 그렇지 않으면 0보다 작은 숫자를 되돌려줍니다. 특히 시간이 같으면 0을 되돌려줍니다. 이 방법의 실현은 밀리초 수를 직접 되돌려 줍니다.
after(Calendar othercalendar), before(Calendar othercalendar), 이 두 함수도 boolean 값을 되돌려줍니다. 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 () 함수
위의 예에서add(intfield, intamount)라는 함수가 나타났는데 이 함수의 기능은 비교적 강력하여 첫 번째 파라미터의 값을 가감하여 이 달력 실체에 대응하는 항목의 수치를 수정할 수 있다.

Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -1);
System.out.println(calendar.getTime());// , 
get (int field) 이것은 말할 것이 없습니다. 얻을 값을 넣고 표시합니다. 예를 들어 get Time InMillis () 를 참고하여 밀리초 수를 되돌려줍니다. 실제 응용 프로그램에서 이 밀리초 수는 비교적 많이 사용됩니다.
set () 방법은 많은 그룹 매개 변수 입력 방식이 있습니다. 쓰기만 하면 알 수 있습니다. set Time () 이 함수는 Date 대상을 넣고 Date 날짜에 따라 달력을 설정합니다.또 주의해야 할 점은 월은 0부터 계산하고 월을 0으로 설정하면 실제는 1월이고 1로 설정하면 실제는 2월이며 일주일의 첫날은 일요일이고 7일은 토요일이다.

calendar.get(Calendar.DATE);
calendar.getTimeInMillis();

calendar.set(field, value);
calendar.set(year, month, date);// 0 , 
calendar.set(year, month, date, hourOfDay, minute);
calendar.set(year, month, date, hourOfDay, minute, second);

calendar.setTime(Date date);//Date 

(5) getTime () clear () isSet () 함수
getTime () 함수는 시간을 되돌려줍니다. 아마도 이 형식의

Sun Jan 11 21:19:49 GMT+08:00 1970
시간 포맷의 방법으로 자신이 좋아하는 모습으로 변할 수 있다. 구체적으로 나의 다른 블로그를 보면 이 함수도 홈이 많지 않다.clear () 함수는 매개 변수가 없는 상황에서 대상의 모든 변수를 비우고 비운 후 시간을 원형으로 되돌려 줍니다.

Thu Jan 01 00:00:00 GMT+08:00 1970
clear () 는 인자 intfield를 첨부하여 이 수치만 지울 수 있습니다.

calendar.clear(Calendar.YEAR);
System.out.println(calendar.getTime());
상기 코드가 마지막으로 표시된 해는 1970년(0000년으로 지울 수 없음...)이며, 다른 것도 이와 같이 추정할 수 있다.
isSet () 방법은 달력 필드에 값이 설정되었는지 확인합니다. 어떤 값은 get 방법이 계산을 촉발하여 설정됩니다. 초기화하기만 하면 많은 값이 설정됩니다. 그러나boolean 반환값의 함수로서 측정할 때 우리는 여전히 작용할 것이라고 믿습니다.

if(calendar.isSet(Calendar.DATE))
(6) 요약
Calendar 클래스는 이름과 같이 달력을 실행할 수 있고 기능이 완전합니다.만약 당신이 단지 시간이 필요할 뿐이라면, 이 종류는 반드시 new Date () 보다 얼마나 빠를 수 있는 것은 아니지만, 세부적인 조작에 대해서는 우리가 배울 점이 매우 많다.
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기