✅ 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 패키지를 사용하는 것이 훨씬 직관적이고 안정적. 🚀
'개발 > 자바' 카테고리의 다른 글
| LocalDate 주요 메서드 정리 (0) | 2025.02.19 |
|---|---|
| SimpleDateFormat Thread-Safe 문제 (0) | 2025.02.19 |
| Java8 : LocalDate vs ZonedDateTime 차이 (0) | 2025.02.19 |
| Java8 : LocalDate, LocalTime, LocalDateTime 날짜 및 시간 관련 클래스 (0) | 2025.02.19 |
| Java의 Wrapper 클래스 개요 및 차이점 (0) | 2025.02.19 |