728x90
✅ LocalDate는 ZoneId 지정이 필요 없음
LocalDate는 날짜(연도, 월, 일)만 관리하는 클래스로, 시간대(ZoneId) 개념이 없음.
즉, LocalDate는 시간 정보 없이 날짜만 저장하므로 ZoneId를 따로 지정할 필요가 없습니다.
1. LocalDate.now() 동작 원리
LocalDate.now()를 호출하면, **시스템 기본 시간대(ZoneId.systemDefault())**에서 현재 날짜를 가져옴.
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
System.out.println("현재 날짜: " + today); // 예: 2025-02-19
}
}
✅ 출력 예시
현재 날짜: 2025-02-19
- 여기서 LocalDate.now()는 시스템 기본 시간대에서 날짜 정보를 가져오지만, 시간대 영향을 받지 않음.
2. ZoneId가 필요한 경우
- LocalDate는 시간 정보가 없기 때문에, ZoneId를 직접 지정할 필요가 없지만,
특정 시간대 기준으로 날짜를 가져오고 싶다면 ZonedDateTime을 활용해야 합니다.
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.ZonedDateTime;
public class Main {
public static void main(String[] args) {
// 서울(Asia/Seoul) 시간대 기준으로 현재 날짜 가져오기
LocalDate seoulDate = ZonedDateTime.now(ZoneId.of("Asia/Seoul")).toLocalDate();
System.out.println("서울 기준 날짜: " + seoulDate);
}
}
✅ 출력 예시
서울 기준 날짜: 2025-02-19
- ZonedDateTime.now(ZoneId.of("Asia/Seoul")).toLocalDate()를 사용하면, 특정 시간대 기준으로 날짜를 가져올 수 있음.
3. LocalDate vs ZonedDateTime 차이
| 클래스 | 포함 정보 | 시간대(ZoneId) 필요 여부 |
| LocalDate | 연도, 월, 일 | ❌ 필요 없음 |
| LocalTime | 시, 분, 초, 나노초 | ❌ 필요 없음 |
| LocalDateTime | 연도, 월, 일, 시, 분, 초 | ❌ 필요 없음 |
| ZonedDateTime | 연도, 월, 일, 시, 분, 초 + 시간대(ZoneId) | ✅ 필요함 |
📌 결론:
✔️ LocalDate는 ZoneId 없이 날짜만 다룸.
✔️ 특정 시간대 기준으로 날짜를 가져오려면 ZonedDateTime을 사용해야 함.
728x90
'개발 > 자바' 카테고리의 다른 글
| SimpleDateFormat Thread-Safe 문제 (0) | 2025.02.19 |
|---|---|
| Java 7 이하에서 날짜 및 시간 관련 클래스 (0) | 2025.02.19 |
| Java8 : LocalDate, LocalTime, LocalDateTime 날짜 및 시간 관련 클래스 (0) | 2025.02.19 |
| Java의 Wrapper 클래스 개요 및 차이점 (0) | 2025.02.19 |
| Java 14 switch 표현식 (switch expression) (0) | 2025.02.18 |