如何将Java日期转换为特定的时区格式

在上一个示例中,我们学习了如何在Java中将日期转换为字符串。在这个示例中,我正在将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) {
		// 空值检查
		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));
		// 以所需格式返回带有时区的日期字符串
		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,然后它将相同的日期对象转换为不同的时区,如IST和GMT,并将其打印出来。使用我上次的教程,您可以再次将返回的字符串转换为日期对象。更新:Java 8已添加了新的日期时间API,请在Java 8日期中查看。

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