세계의 시간대
한국의 시간대는 UTC+9
세계 협정시보다 9시간 빠름을 의미함
시간대를 표현하는 ZoneId 클래스
시간대 고려한 코드 작성을 위해서는 ZonedId 인스턴스 생성
class ZoneIdDemo1 {
public static void main(String[] args) {
ZoneId paris = ZoneId.of("Europe/Paris");
System.out.println(paris);
}
}
파리의 시간대 정보를 반영한 ZonedId 생성
ZoneId 인스턴스 생성 위한 문자열 확인 방법
시간대별 문자열 정보 전체 출력 방법
ZoneId.getAvailableZoneIds()
.stream()
.sorted()
.forEach(s -> System.out.println(s));
일부 정보만 선별해서 출력하는 방법
ZoneId.getAvailableZoneIds()
.stream()
.filter(s -> s.startsWith("Asia"))
.sorted()
.forEach(s -> System.out.println(s));
시간대를 반영한 ZonedDateTime 클래스
public static void main(String[] args) {
// 이곳의 현재 날짜와 시각
ZonedDateTime here = ZonedDateTime.now();
System.out.println(here);
// 동일한 날짜와 시각의 파리
ZonedDateTime paris = ZonedDateTime.of(
here.toLocalDateTime(), ZoneId.of("Europe/Paris"));
날짜와 시각 정보만 LocalDateTime 인스턴스에 담아서 반환
System.out.println(paris);
// 이곳과 파리의 시차
Duration diff = Duration.between(here, paris);
System.out.println(diff);
}
2016-12-24T15:32:02.973+09:00[Asia/Seoul]
날짜는 2016-12-24, 시각은 15:32:02.973, 시간대는 Asia/Seoul
시간대를 반영한 예제
[From 한국 to 프랑스]
• 한국 출발 현지 시간 2017년 12월 9일 14시 30분
• 파리 도착 현지 시간 2017년 12월 9일 17시 25분
• 비행에 걸린 시간은?
public static void main(String[] args) {
// 한국 출발 2017-09-09 14:30
ZonedDateTime departure = ZonedDateTime.of(
LocalDateTime.of(2017, 12, 9, 14, 30), ZoneId.of("Asia/Seoul"));
System.out.println("Departure : " + departure);
// 파리 도착 2017-09-09 17:25
ZonedDateTime arrival = ZonedDateTime.of(
LocalDateTime.of(2017, 12, 9, 17, 25), ZoneId.of("Europe/Paris"));
System.out.println("Arrival : " + arrival);
// 비행 시간
System.out.println(Duration.between(departure, arrival));
}
날짜와 시각 정보의 출력 포맷 지정
y, M, d는 각각 년, 월, 일의 출력을 의미
H, m, s는 각각 시, 분, 초의 출력을 의미
VV는 시간대 ID의 출력을 의미
public static void main(String[] args) {
ZonedDateTime date = ZonedDateTime.of(
LocalDateTime.of(2019, 4, 25, 11, 20), ZoneId.of("Asia/Seoul"));
// 출력의 포맷 정보는 java.time.format.DateTimeFormatter 인스턴스에 담는다.
DateTimeFormatter fm1 = DateTimeFormatter.ofPattern("yy-M-d");
DateTimeFormatter fm2 = DateTimeFormatter.ofPattern("yyyy-MM-d, H:m:s");
DateTimeFormatter fm3 = DateTimeFormatter.ofPattern("yyyy-MM-d, HH:mm:ss VV");
// LocalDate, LocalTime, LocalDateTime, ZonedDateTime에 모두 존재하는 format 메소드 호출한다.
System.out.println(date.format(fm1));
System.out.println(date.format(fm2));
System.out.println(date.format(fm3));
}
'# 02 > Java' 카테고리의 다른 글
[윤성우 열혈자바] 32-2. 필터 스트림의 이해와 활용 (0) | 2019.10.28 |
---|---|
[윤성우 열혈자바] 32-1. I/O 스트림에 대한 이해 (0) | 2019.10.28 |
[윤성우 열혈자바] 31-1. 시각과 날짜 관련 코드의 작성 (0) | 2019.10.28 |
[윤성우 열혈자바] 30-3. 스트림의 최종 연산 (0) | 2019.10.28 |
[윤성우 열혈자바] 30-2. 스트림의 중간 연산 (0) | 2019.10.28 |