Java의 Calendar
클래스는 날짜와 시간을 조작하고 관리하기 위한 클래스로, 특정 날짜의 연도, 월, 일, 시각 등을 쉽게 가져오거나 수정할 수 있도록 설계되어 있습니다. 이 클래스는 추상 클래스이며, GregorianCalendar
를 통해 구현됩니다.
추상 클래스
Calendar
는 추상 클래스이며, 객체는 Calendar.getInstance()
로 생성합니다.날짜-시간 조작 가능
현지화(Localization) 지원
Java 8 이상에서는 java.time
추천
Calendar
는 하위 호환성을 위해 남아 있지만, 새 코드에서는 java.time
API를 사용하는 것이 권장됩니다.Calendar
객체를 현재 날짜와 시간으로 생성하는 방법입니다.
import java.util.Calendar;
public class Main {
public static void main(String[] args) {
// 현재 날짜 및 시간으로 Calendar 객체 생성
Calendar calendar = Calendar.getInstance();
// 출력
System.out.println(calendar); // 내부 값 출력
}
}
특정 필드(연도, 월, 일 등)의 값을 가져옵니다.
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);
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()); // 설정한 날짜 출력
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, 5); // 현재 날짜에 5일 추가
System.out.println("5일 후: " + calendar.getTime());
Calendar calendar = Calendar.getInstance();
calendar.roll(Calendar.DAY_OF_MONTH, 10); // 월은 유지하면서 일만 변경
System.out.println(calendar.getTime());
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: 토요일)
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);
}
}
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());
}
}
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());
}
}
Java 8 이상에서는 java.time
패키지가 도입되어 LocalDate
, LocalTime
등의 클래스가 Calendar
보다 직관적이고 강력한 기능을 제공합니다.
Calendar
: 과거 코드에서 많이 사용되며 하위 호환성을 위해 유지됩니다.
java.time
: 현대적인 API로, 새 코드에 권장됩니다.