[Java] Calendar 클래스

아현·약 5시간 전
1

Java

목록 보기
14/14

Calendar 클래스


Java의 Calendar 클래스는 날짜와 시간을 조작하고 관리하기 위한 클래스로, 특정 날짜의 연도, 월, 일, 시각 등을 쉽게 가져오거나 수정할 수 있도록 설계되어 있습니다. 이 클래스는 추상 클래스이며, GregorianCalendar를 통해 구현됩니다.

  • 주요 특징
  1. 추상 클래스

    • Calendar는 추상 클래스이며, 객체는 Calendar.getInstance()로 생성합니다.
  2. 날짜-시간 조작 가능

    • 날짜, 시간의 특정 필드를 가져오거나 설정(set), 계산(add), 롤링(roll) 등이 가능합니다.
  3. 현지화(Localization) 지원

    • 세계 여러 로케일의 시간대와 날짜 형식 처리를 지원합니다.
  4. Java 8 이상에서는 java.time 추천

    • Calendar는 하위 호환성을 위해 남아 있지만, 새 코드에서는 java.time API를 사용하는 것이 권장됩니다.



Calendar 객체 생성


  • 다음 코드는 Calendar 객체를 현재 날짜와 시간으로 생성하는 방법입니다.

import java.util.Calendar;

public class Main { 
	public static void main(String[] args) { 
      // 현재 날짜 및 시간으로 Calendar 객체 생성 
      Calendar calendar = Calendar.getInstance();

      // 출력
      System.out.println(calendar); // 내부 값 출력
	}
}



주요 메서드


1. get(int field)


특정 필드(연도, 월, 일 등)의 값을 가져옵니다.


Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH); // 0-based (0: 1월, 11: 12월)
int day = calendar.get(Calendar.DAY_OF_MONTH);

System.out.println("Year: " + year);
System.out.println("Month: " + (month + 1)); // 1부터 시작하도록 변환
System.out.println("Day: " + day);



2. set(int field, int value)


  • 특정 필드의 날짜 또는 시간 값을 설정합니다.

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 2025);
calendar.set(Calendar.MONTH, Calendar.FEBRUARY); // 1: 2월
calendar.set(Calendar.DAY_OF_MONTH, 28);

System.out.println(calendar.getTime()); // 설정한 날짜 출력



3. add(int field, int amount)


  • 날짜/시간 필드 값을 더하거나 뺍니다.

Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, 5); // 현재 날짜에 5일 추가
System.out.println("5일 후: " + calendar.getTime());



4. roll(int field, int amount)


  • 다른 필드에 영향을 주지 않고 특정 필드 값만 변환합니다.

Calendar calendar = Calendar.getInstance();
calendar.roll(Calendar.DAY_OF_MONTH, 10); // 월은 유지하면서 일만 변경
System.out.println(calendar.getTime());



5. getTime()와 setTime(Date date)


  • Calendar 객체에서 Date 객체를 가져오거나 설정합니다.

Calendar calendar = Calendar.getInstance();

// Date 객체로 변환
Date date = calendar.getTime();
System.out.println(date);

// Date 객체로 설정
calendar.setTime(date);
System.out.println(calendar.getTime());



주요 상수


  • Calendar 클래스에는 날짜와 시간을 나타내는 상수가 정의되어 있으며, 이를 통해 조작할 수 있습니다.

    • Calendar.YEAR: 연도

    • Calendar.MONTH: 월 (0: 1월, 11: 12월)

    • Calendar.DAY_OF_MONTH: 월별 일

    • Calendar.HOUR: 12시간제 시간

    • Calendar.HOUR_OF_DAY: 24시간제 시간

    • Calendar.MINUTE: 분

    • Calendar.SECOND: 초

    • Calendar.DAY_OF_WEEK: 요일 (1: 일요일, 7: 토요일)



사용 예제


1. 현재 날짜 정보 가져오기



import java.util.Calendar;

public class Main {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();

        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1; // 사람 기준: 1월부터 시작
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        int hour = calendar.get(Calendar.HOUR_OF_DAY);
        int minute = calendar.get(Calendar.MINUTE);

        System.out.printf("현재 날짜와 시간: %d년 %d월 %d일 %d시 %d분\n", year, month, day, hour, minute);
    }
}



2. 특정 날짜 설정



import java.util.Calendar;

public class Main {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();

        // 원하는 날짜 설정: 2025년 2월 28일
        calendar.set(Calendar.YEAR, 2025);
        calendar.set(Calendar.MONTH, Calendar.FEBRUARY); // 0 기반 (1월 = 0)
        calendar.set(Calendar.DAY_OF_MONTH, 28);

        System.out.println("설정된 날짜: " + calendar.getTime());
    }
}



3. 날짜 계산



import java.util.Calendar;

public class Main {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();

        // 현재 날짜에 100일 추가
        calendar.add(Calendar.DAY_OF_YEAR, 100);
        System.out.println("100일 후 날짜: " + calendar.getTime());

        // 현재 날짜에서 1년 뺌
        calendar.add(Calendar.YEAR, -1);
        System.out.println("1년 전 날짜: " + calendar.getTime());
    }
}



Calendar와 java.time 비교


Java 8 이상에서는 java.time 패키지가 도입되어 LocalDate, LocalTime 등의 클래스가 Calendar보다 직관적이고 강력한 기능을 제공합니다.

  • Calendar: 과거 코드에서 많이 사용되며 하위 호환성을 위해 유지됩니다.

  • java.time: 현대적인 API로, 새 코드에 권장됩니다.



profile
For the sake of someone who studies computer science

0개의 댓글

관련 채용 정보