언어/JAVA

[JAVA] UTC, GMT

steadyMan 2024. 7. 7. 23:58

 

막연하게 "국제 표준 시간"으로 알고 있다가 막상 시간대를 고려해야 하는 상황에 와서 정리를 시작했습니다!

 


UTC(Coordinated Universal Time)

세계 표준 시간대로 영국을 기준으로 전 세계의 지역에 따라 시차(시간)을 규정한 표준 시로 GMT와 같은 시간대를 공유한다.

GMT(Greenwich Mean Time)

영국 그리니치 천문대를 기준으로 한 시간대로 UTC와 동일한 시간대를 나타대며, 표기방법도 동일하다.

 

결국 UTC, GMT는 측정 기준만 다른 동일한 시간대의 국제 표준시간이다.

그래서 각 나라 혹은 도시는 UTC, GMT를 기준으로 시간대가 결정된다. 

지역별 시간대

우리나라의 경우 UTC에 9시간을 더한 시간대인 UTC+9을 표준시로 쓰며, 이 시간을 KST(한국 표준시)라고 합니다.

 

그렇다면 자바에서 시간대를 어떻게 활용할 수 있는지 방법을 찾아봤습니다. 

public static void main(String[] args) {
    // 현재 UTC 시간
    ZonedDateTime utcTime = ZonedDateTime.now(ZoneId.of("UTC"));
    System.out.println("Current UTC Time: " + utcTime);

    // 현재 GMT 시간
    ZonedDateTime gmtTime = ZonedDateTime.now(ZoneId.of("GMT"));
    System.out.println("Current GMT Time: " + gmtTime);

    // 특정 시간대 예: Asia/Seoul(KST)
    ZonedDateTime seoulTime = ZonedDateTime.now(ZoneId.of("Asia/Seoul"));
    System.out.println("Current Seoul Time: " + seoulTime);
}

// 출력 결과 
Current UTC Time: 2024-07-14T14:24:02.864417300Z[UTC]
Current GMT Time: 2024-07-14T14:24:02.867420500Z[GMT]
Current Seoul Time: 2024-07-14T23:24:02.894421900+09:00[Asia/Seoul]

 

time 패키지의 ZoneId, ZonedDateTime을 활용하여 UTC, GMT기반의 각 지역별 시간대를 구할 수 있으며, ZoneId를

생성할때 지역/도시 형태의 문자열을 전달하여 생성합니다. 이렇게 구한 시간을 ISO 8601 형식으로 변경하여

로직에 활용 할 수 있겠습니다.