如何将Java的日期转换成特定的时区格式
在上一个例子中,我们学习了如何在Java中将日期转换为字符串。在这个例子中,我将一个Java的日期对象从一个时区转换到另一个时区。我们将使用SimpleDateFormat类来格式化日期,并设置其时区来按指定的时区打印日期。
package com.Olivia.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 check
if (date == null) return null;
// create SimpleDateFormat object with input format
SimpleDateFormat sdf = new SimpleDateFormat(format);
// default system timezone if passed null or empty
if (timeZone == null || "".equalsIgnoreCase(timeZone.trim())) {
timeZone = Calendar.getInstance().getTimeZone().getID();
}
// set timezone to SimpleDateFormat
sdf.setTimeZone(TimeZone.getTimeZone(timeZone));
// return Date in required format with timezone as String
return sdf.format(date);
}
public static void main(String[] args) {
//Test formatDateToString method
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日期中查看。