#10699 - 오늘 날짜
📌 문제 정보
- 문제 이름 : #10699번 - 오늘 날짜
- 문제 링크: https://www.acmicpc.net/problem/10699
📌 문제 요약
- 핵심 조건: 서울의 오늘 날짜를 "YYYY-MM-DD" 형식으로 출력 (채점 서버는 시간대(Timezone)는 UTC+0)
- 시간복잡도 제한: 없음
📌 내 풀이 및 코드
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
System.out.println(LocalDate.now());
}
}
<-- 내가 처음에 어떻게 풀었는지 -->
- 문법 몰라서 구글링해서 찾아본게 LocalDate 쓰는거였는데 틀렸다고 나옴.
- 문법적으로는 맞았는데 백준 서버 시간대 때문에 틀린 코드로 쳤음. (내 pc 시간대는 KST이기 때문에)
📌 최종 정답 및 풀이
import java.time.LocalDate;
import java.time.ZoneId;
public class Main {
public static void main(String[] args) {
LocalDate today = LocalDate.now(ZoneId.of("Asia/Seoul"));
System.out.println(today);
}
}
<-- 풀이 요약 -->
- “UTC+0 기준” 힌트를 주면서도, 실제로는 “서울(KST)” 기준 날짜를 출력해야 함.
| LocalDate.now() | 서버에서 UTC로 찍힘 → 하루 어긋날 수 있음 |
| LocalDate.now(ZoneId.of("UTC")) | 무조건 UTC → 서울 기준 아님 → 틀림 |
| LocalDate.now(ZoneId.of("Asia/Seoul")) | ✅ 서울 기준 → 정답! |
<-- 다른 풀이 요약 -->
- ZonedDateTime : 날짜 + 시간까지 필요할 땐 ZonedDateTime.now(ZoneId.of("Asia/Seoul")) 도 씀.
- DateTimeFormatter : 만약 포맷을 바꾸고 싶으면 DateTimeFormatter로 "yyyy-MM-dd" 포맷 직접 지정 가능
📌 새로 배운 문법
<-- 이번 문제에서 새로 배운 Java 문법 정리 -->
- LocalDate 클래스 LocalDate.now() => LocalDate : 오늘 날짜(년-월-일)만 가져옴 (LocalDateTime과 다름)
- ZoneId로 타임존 지정 ZoneId.of("Asia/Seoul") => LocalDate.now()에 원하는 타임존 강제 지정할 때 사용
- 기본은 시스템 타임존(서버는 UTC)이기 때문에, 한국(KST)로 맞출 땐 ZoneId.of("Asia/Seoul") 필수.
- (참고) LocalDate는 시간 정보는 없고 날짜만 있음. 시간까지 필요하면 ZonedDateTime 사용.
- (참고) 날짜 포맷을 바꿔야 하면 DateTimeFormatter.ofPattern("yyyy-MM-dd") 등을 사용.