이 글에서는 현지 시간(Local Time)을 GMT(그리니치 표준시)로 변환하는 방법을 알아보겠습니다. Java에는 기본으로 제공되는 내장 Date 클래스가 없지만, java.time 패키지를 임포트하면 날짜와 시간 API를 자유롭게 활용할 수 있습니다. 이 패키지에는 다양한 날짜·시간 관련 클래스가 포함되어 있습니다.
아래는 실제 변환 결과를 보여주는 예시입니다.
입력 예시
현지 시간: Fri Mar 18 00:01:54 IST 2022
출력 예시
GMT 기준 시간: 17/03/2022 18:31:54
알고리즘
1단계 - 시작합니다. 2단계 - LocalDateTime 타입의 객체 date를 선언합니다. 3단계 - 값을 정의합니다. 4단계 - DateTimeFormatter 객체를 사용해 다양한 날짜·시간 형식을 정의합니다. 5단계 - GMT 형식의 날짜 및 시간을 출력합니다. 6단계 - 종료합니다.
예제 1: main 함수에서 모든 작업 처리하기
첫 번째 예제에서는 모든 연산을 하나의 'main' 함수 안에 함께 작성하는 방식을 살펴봅니다.
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
public class Demo {
public static void main(String[] args){
System.out.println("필요한 패키지가 임포트되었습니다");
Date localTime = new Date();
System.out.println("Date 객체가 생성되었습니다");
DateFormat GMT_format = new SimpleDateFormat("dd/MM/yyyy" + " " + " HH:mm:ss");
GMT_format.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println("\n현지 시간: " + localTime);
System.out.println("GMT 기준 시간: " + GMT_format.format(localTime));
}
}실행 결과
필요한 패키지가 임포트되었습니다 Date 객체가 생성되었습니다 현지 시간: Tue Mar 29 08:59:11 UTC 2022 GMT 기준 시간: 29/03/2022 08:59:11
예제 2: 객체 지향 방식으로 함수 분리하기
두 번째 예제에서는 반복적인 작업을 별도의 함수로 캡슐화하여 객체 지향 프로그래밍(OOP) 스타일로 구현합니다. 코드의 재사용성과 가독성이 향상된다는 장점이 있습니다.
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
public class Demo {
static void GMT_time(Date localTime){
DateFormat GMT_format = new SimpleDateFormat("dd/MM/yyyy" + " " + " HH:mm:ss");
GMT_format.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println("\n현지 시간: " + localTime);
System.out.println("GMT 기준 시간: " + GMT_format.format(localTime));
}
public static void main(String[] args){
System.out.println("필요한 패키지가 임포트되었습니다");
Date localTime = new Date();
System.out.println("Date 객체가 생성되었습니다");
GMT_time(localTime);
}
}실행 결과
필요한 패키지가 임포트되었습니다 Date 객체가 생성되었습니다 현지 시간: Tue Mar 29 08:59:38 UTC 2022 GMT 기준 시간: 29/03/2022 08:59:38
정리
이처럼 SimpleDateFormat과 TimeZone.getTimeZone("GMT")를 조합하면 간단하게 현지 시간을 GMT로 변환할 수 있습니다. 두 가지 예제 모두 동일한 결과를 출력하지만, 예제 2처럼 기능을 함수로 분리하면 유지보수가 쉬워지고 코드 재사용에도 유리합니다.