1. Calendar 클래스란?
자바에서 날짜와 시간을 다룰 때 가장 기본적으로 사용하는 클래스가 Calendar 입니다.
하지만 Calendar는 추상 클래스(abstract class) 이기 때문에 직접 객체를 만들 수 없습니다.
Calendar cal = new Calendar(); // ❌ 불가능
대신, 정적 메서드 getInstance() 를 통해 현재 시스템의 날짜와 시간을 가진 객체를 얻을 수 있습니다.
Calendar cal = Calendar.getInstance(); // ✅ 올바른 방법
(1.) 오늘 날짜 구하기
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1; // MONTH는 0부터 시작하므로 +1
int date = cal.get(Calendar.DATE);
System.out.println(year + "년 " + month + "월 " + date + "일");
(2) 요일 구하기
int day = cal.get(Calendar.DAY_OF_WEEK);
// 일:1, 월:2, 화:3, 수:4, 목:5, 금:6, 토:7
String[] week = {"", "일", "월", "화", "수", "목", "금", "토"};
System.out.println(week[day] + "요일");
👉 Calendar.DAY_OF_WEEK은 1 ~ 7 범위를 반환합니다.
- 1 → 일요일
- 2 → 월요일
- …
- 7 → 토요일
(3) 시, 분, 초 구하기
int hour = cal.get(Calendar.HOUR); // 12시간제
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
System.out.println(hour + "시 " + minute + "분 " + second + "초");
(4) 핵심 정리
- Calendar는 추상 클래스 → new로 직접 생성 불가
- Calendar.getInstance() 로 객체 생성
- Calendar.MONTH는 0부터 시작 (따라서 +1 필요)
- Calendar.DAY_OF_WEEK은 1(일) ~ 7(토) 반환
- 시각은 HOUR(12시간제) 또는 HOUR_OF_DAY(24시간제)로 구분
2. Date 클래스란?
- java.util.Date는 날짜와 시간을 표현하는 클래스입니다.
- 현재 시스템의 날짜와 시간을 쉽게 얻을 수 있습니다.
- 하지만 오래된 클래스(Deprecated 메서드 포함) 라 Calendar나 LocalDateTime(Java 8 이상)을 쓰는 것이 더 권장됩니다.
⚫Date객체 생성
Date now = new Date(); // 현재 시간 가져오기
System.out.println(now);
👉 실행하면 시스템의 현재 날짜와 시간이 출력
주요 메서드
(1) toString()
- 날짜와 시간을 문자열로 반환합니다.
System.out.println(now.toString());
(2) getYear()
- 1900년을 기준으로 계산된 연도를 반환합니다.
- 따라서 실제 연도를 얻으려면 +1900을 해주어야 합니다.
System.out.println(now.getYear() + 1900 + "년");
(3) getMonth()
- 0 ~ 11 사이의 값을 반환합니다. (0=1월, 11=12월)
- 따라서 실제 월은 +1 해야 합니다.
System.out.println(now.getMonth() + 1 + "월");
(4) getDay()
요일을 0~6 값으로 반환합니다.
- 0 → 일요일
- 1 → 월요일
- …
- 6 → 토요일
int day = now.getDay();
String[] week = {"일","월","화","수","목","금","토"};
System.out.println(week[day] + "요일");
3. SimpleDateFormat란?
- java.text.SimpleDateFormat 클래스는 Date 객체를 원하는 형태의 문자열로 변환할 수 있게 해줍니다.
- 날짜와 시간의 출력 형식을 자유롭게 지정할 수 있습니다.
- 예: 2025-08-22, 2025년 8월 22일 금요일, 25/08/22 오전 09:20:15
기본 사용법
Date now = new Date(); // 현재 날짜와 시간
SimpleDateFormat sdf = new SimpleDateFormat("패턴");
String result = sdf.format(now);
import java.text.SimpleDateFormat;
import java.util.Date;
public class Ex11_SimpleDateFormat {
public static void main(String[] args) {
Date now = new Date();
System.out.println("현재 날짜 객체 : " + now);
// 패턴 1: 연-월-일 요일
SimpleDateFormat sdf1 = new SimpleDateFormat("YYYY-M-d일 E요일");
System.out.println("패턴1 : " + sdf1.format(now));
// 패턴 2: yy/MM/dd a hh:mm:ss
SimpleDateFormat sdf2 = new SimpleDateFormat("yy/MM/dd a hh:mm:ss");
System.out.println("패턴2 : " + sdf2.format(now));
}
}
현재 날짜 객체 : Fri Aug 22 09:30:45 KST 2025
패턴1 : 2025-8-22일 금요일
패턴2 : 25/08/22 오전 09:30:45
정리
- SimpleDateFormat → 날짜(Date)를 문자열로 변환할 때 사용
- 패턴 문자를 조합해 원하는 형식으로 자유롭게 출력 가능
- 대소문자(M=월, m=분) 반드시 구분!
'기초 및 언어 > ▶ Java&JSP' 카테고리의 다른 글
| 30. 컬렉션(Collection) (0) | 2025.08.24 |
|---|---|
| 29. Generic (1) | 2025.08.22 |
| 27. 패키지 - String (3) | 2025.08.22 |
| 26. 패키지 - Object (0) | 2025.08.22 |
| 25. 예외 처리(try ~ catch ~ finally), throw, Exception (0) | 2025.08.20 |