Java 날짜를 특정 TimeZone 형식으로 변환하는 방법

마지막 예제에서는 Java에서 Date를 String으로 변환하는 방법을 배웠습니다. 이 예제에서는 Java Date 객체를 한 시간대에서 다른 시간대로 변환합니다. 우리는 SimpleDateFormat 클래스를 사용하여 날짜를 특정 형식으로 포맷하고 시간대를 설정하여 특정 시간대로 날짜를 출력할 것입니다.

package com.journaldev.util;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

public class DateFormatter {

	/**
	 * Utility function to convert java Date to TimeZone format
	 * @param date
	 * @param format
	 * @param timeZone
	 * @return
	 */
	public static String formatDateToString(Date date, String format,
			String timeZone) {
		// null 체크
		if (date == null) return null;
		// 입력 형식으로 SimpleDateFormat 객체 생성
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		// null 또는 빈 값인 경우 기본 시스템 시간대
		if (timeZone == null || "".equalsIgnoreCase(timeZone.trim())) {
			timeZone = Calendar.getInstance().getTimeZone().getID();
		}
		// SimpleDateFormat에 시간대 설정
		sdf.setTimeZone(TimeZone.getTimeZone(timeZone));
		// 필요한 형식으로 시간대가 포함된 문자열로 Date 반환
		return sdf.format(date);
	}

	public static void main(String[] args) {
		// formatDateToString 메서드 테스트
		Date date = new Date();
		System.out.println("Default Date:"+date.toString());
		System.out.println("System Date: "+formatDateToString(date, "dd MMM yyyy hh:mm:ss a", null));
		System.out.println("System Date in PST: "+formatDateToString(date, "dd MMM yyyy hh:mm:ss a", "PST"));
		System.out.println("System Date in IST: "+formatDateToString(date, "dd MMM yyyy hh:mm:ss a", "IST"));
		System.out.println("System Date in GMT: "+formatDateToString(date, "dd MMM yyyy hh:mm:ss a", "GMT"));
	}

}

프로그램의 출력은 다음과 같습니다:

Default Date:Wed Nov 14 21:37:01 PST 2012
System Date: 14 Nov 2012 09:37:01 PM
System Date in PST: 14 Nov 2012 09:37:01 PM
System Date in IST: 15 Nov 2012 11:07:01 AM
System Date in GMT: 15 Nov 2012 05:37:01 AM

출력에서 나타나듯이 시스템의 시간대가 PST임을 알 수 있으며, 동일한 Date 객체를 IST 및 GMT와 같은 다른 시간대로 변환하여 출력합니다. 지난 강좌를 사용하여 반환된 문자열을 다시 Date 객체로 변환할 수 있습니다. 업데이트: Java 8에서는 새로운 Date Time API가 추가되었습니다. Java 8 Date에서 확인해보세요.

Source:
https://www.digitalocean.com/community/tutorials/how-to-convert-java-date-into-specific-timezone-format