본문으로 바로가기

Java8 UTC날짜 스트링을 Asia/Seoul로 바꾸기

category Language/JAVA 2017.08.22 13:55

Java8 UTC날짜 스트링을 Asia/Seoul로 바꾸기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ZoneId utcZone = ZoneId.of("UTC");
 
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse("2017-09-07 11:00:00", formatter);
ZonedDateTime utcDateTime = dateTime.atZone(utcZone);
System.out.println("utcDateTime = " + utcDateTime);
 
ZonedDateTime zdt = utcDateTime.withZoneSameInstant(ZoneId.of("Asia/Seoul"));
String date = zdt.format(DateTimeFormatter.ISO_LOCAL_DATE);
String time = zdt.format(DateTimeFormatter.ISO_LOCAL_TIME);
 
System.out.println(zdt);
System.out.println(date);
System.out.println(time);
 
Date date1 = Date.from(zdt.toInstant());
System.out.println(date1);
cs


크롤링을 해서 파싱을 하다보면 날짜가 오긴 오는데 UTC로 와서 이걸 다시 한국 시간으로 시간대를 변경 해주어야 할때가 있다.


이럴때 자바8에서 새로 나온 기능인 LocalDate, LocalTime, LocalDateTime, ZonedDateTime 등을 이용하면 비교적 짜임새 있게 날짜를 컨트롤 할 수 있다.


예를들면 썸머타임등을 따로 처리 하지 않아도 알아서 처리를 해주는 등이 편한 기능이다.


인터넷에 예제를 찾아보니까 Date, Calendar 등의 객체를 가지고 하는데 이걸 쓰면 비교적 깔끔하게 바뀐다.


end.



저작자 표시 비영리
신고

댓글을 달아 주세요