본문 바로가기
기초 및 언어/▶ Java&JSP

28. Calendar, Date, SimpleDataFormat

by 류딩이 2025. 8. 22.

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