개발/자바

Java 7 이하에서 날짜 및 시간 관련 클래스

피터JK 2025. 2. 19. 12:45
728x90

Java 7 이하에서 날짜 및 시간 관련 클래스 사용법

Java 8부터 java.time 패키지가 도입되었지만, Java 7 이하에서는 기존의 java.util.Date, java.util.Calendar, java.text.SimpleDateFormat 등을 사용해야 합니다.


📌 1. java.util.Date 사용법 (기본적인 날짜/시간)

Date 클래스는 날짜와 시간을 표현할 수 있지만, 시간대(ZoneId) 정보가 없고, 불변(Immutable)하지 않아 Thread-Safe하지 않음.

import java.util.Date;

public class Main {
    public static void main(String[] args) {
        Date now = new Date();
        System.out.println("현재 날짜 및 시간: " + now);
    }
}

출력 예시

현재 날짜 및 시간: Wed Feb 19 16:00:00 KST 2025
  • Date는 내부적으로 1970-01-01 00:00:00 UTC부터 경과된 밀리초(ms)를 저장.

📌 2. SimpleDateFormat을 사용한 날짜 포맷 변경

SimpleDateFormat을 사용하면 Date 객체를 원하는 형식의 문자열로 변환할 수 있음.

import java.text.SimpleDateFormat;
import java.util.Date;

public class Main {
    public static void main(String[] args) {
        Date now = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String formattedDate = sdf.format(now);
        
        System.out.println("포맷된 날짜: " + formattedDate);
    }
}

출력 예시

포맷된 날짜: 2025-02-19 16:00:00

단점: SimpleDateFormat은 Thread-Safe하지 않음, 멀티스레드 환경에서는 ThreadLocal을 사용해야 함.


📌 3. Calendar를 사용한 날짜 계산

Java 7 이하에서는 java.util.Calendar를 사용하여 날짜 계산을 수행할 수 있음.

import java.util.Calendar;

public class Main {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        
        // 현재 날짜 및 시간 출력
        System.out.println("현재 날짜 및 시간: " + calendar.getTime());

        // 날짜 더하기 (7일 후)
        calendar.add(Calendar.DATE, 7);
        System.out.println("7일 후: " + calendar.getTime());

        // 특정 날짜 설정
        calendar.set(2025, Calendar.DECEMBER, 25);
        System.out.println("설정된 날짜: " + calendar.getTime());
    }
}

출력 예시

현재 날짜 및 시간: Wed Feb 19 16:00:00 KST 2025
7일 후: Wed Feb 26 16:00:00 KST 2025
설정된 날짜: Thu Dec 25 00:00:00 KST 2025

장점: Calendar는 날짜 연산이 가능
단점: Calendar는 불필요한 복잡성이 많고, 불변 객체가 아니므로 Thread-Safe하지 않음.


📌 4. TimeZone을 사용한 시간대 변경

Java 7 이하에서는 TimeZone을 사용하여 특정 시간대를 적용할 수 있음.

import java.util.Calendar;
import java.util.TimeZone;

public class Main {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("America/New_York"));
        System.out.println("뉴욕 시간: " + calendar.getTime());

        calendar.setTimeZone(TimeZone.getTimeZone("Asia/Seoul"));
        System.out.println("서울 시간: " + calendar.getTime());
    }
}

출력 예시

뉴욕 시간: Wed Feb 19 02:00:00 EST 2025
서울 시간: Wed Feb 19 16:00:00 KST 2025

단점: TimeZone은 Calendar와 함께 사용해야 하므로 코드가 복잡해짐.


📌 5. Timestamp를 사용한 데이터베이스 날짜 처리

java.sql.Timestamp는 JDBC에서 날짜/시간을 저장하고 읽을 때 사용.

import java.sql.Timestamp;
import java.util.Date;

public class Main {
    public static void main(String[] args) {
        Timestamp timestamp = new Timestamp(new Date().getTime());
        System.out.println("현재 Timestamp: " + timestamp);
    }
}

출력 예시

현재 Timestamp: 2025-02-19 16:00:00.123
  • 데이터베이스와 연동할 때 Timestamp를 주로 사용.

📌 결론: Java 7 이하 날짜/시간 처리 방법 요약

클래스 설명 Thread-Safe 여부
Date 날짜/시간 표현 (1970년 기준)
SimpleDateFormat 날짜 포맷 변경 ❌ (ThreadLocal 필요)
Calendar 날짜 계산, 시간대 변경 가능
TimeZone 특정 시간대 적용
Timestamp DB와 연동 시 날짜 저장 및 변환

🔹 Java 7 이하에서는 Calendar와 SimpleDateFormat을 조합하여 사용해야 하지만,
🔹 Java 8 이상에서는 java.time 패키지를 사용하는 것이 훨씬 직관적이고 안정적. 🚀

728x90