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

在最后一个例子中,我们学会了如何在Java中将日期转换为字符串(/community/tutorials/convert-string-date-java)。在这个例子中,我正在将Java 日期对象从一个时区转换到另一个时区。我们将使用 SimpleDateFormat类来格式化日期以特定格式,并将其时区设置为在特定时区打印日期。

 1package com.journaldev.util;
 2
 3import java.text.SimpleDateFormat;
 4import java.util.Calendar;
 5import java.util.Date;
 6import java.util.TimeZone;
 7
 8public class DateFormatter {
 9
10    /**
11     * Utility function to convert java Date to TimeZone format
12     * @param date
13     * @param format
14     * @param timeZone
15     * @return
16     */
17    public static String formatDateToString(Date date, String format,
18    		String timeZone) {
19    	// null check
20    	if (date == null) return null;
21    	// create SimpleDateFormat object with input format
22    	SimpleDateFormat sdf = new SimpleDateFormat(format);
23    	// default system timezone if passed null or empty
24    	if (timeZone == null || "".equalsIgnoreCase(timeZone.trim())) {
25    		timeZone = Calendar.getInstance().getTimeZone().getID();
26    	}
27    	// set timezone to SimpleDateFormat
28    	sdf.setTimeZone(TimeZone.getTimeZone(timeZone));
29    	// return Date in required format with timezone as String
30    	return sdf.format(date);
31    }
32
33    public static void main(String[] args) {
34    	//Test formatDateToString method
35    	Date date = new Date();
36    	System.out.println("Default Date:"+date.toString());
37    	System.out.println("System Date: "+formatDateToString(date, "dd MMM yyyy hh:mm:ss a", null));
38    	System.out.println("System Date in PST: "+formatDateToString(date, "dd MMM yyyy hh:mm:ss a", "PST"));
39    	System.out.println("System Date in IST: "+formatDateToString(date, "dd MMM yyyy hh:mm:ss a", "IST"));
40    	System.out.println("System Date in GMT: "+formatDateToString(date, "dd MMM yyyy hh:mm:ss a", "GMT"));
41    }
42
43}

以下是该计划的结果:

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

从输出,很明显我的系统TimeZone是PST,然后它正在将相同的日期对象转换为不同的时区,如IST和GMT,并打印它. 使用我的最后一个教程,你可以再次将返回的字符串转换为日期对象。

Published At
Categories with 技术
Tagged with
comments powered by Disqus