如何使用自定义时区显示日期?

Kyl*_*oon 11 java timezone date date-format

假设我有一个字符串代表一个如下所示的日期:

"格林威治标准时间2008年7月17日17:08:48 GMT"

所以我将该字符串解析为这样的日期对象:

DateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss ZZZ yyyy");
Date fromDate = (Date)formatter.parse(fromDateString);
Run Code Online (Sandbox Code Playgroud)

这给了我正确的日期对象.现在我想将此日期显示为CDT值.

我尝试了很多东西,但我无法让它正常工作.必须有一个使用DateFormat类的简单方法才能使其工作.有什么建议?我最后一次尝试是这样的:

formatter.setTimeZone(toTimeZone);
String result = formatter.format(fromDate);
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 18

使用"zzz"代替"ZZZ":"Z"是RFC822时区的符号.

DateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
Run Code Online (Sandbox Code Playgroud)

话虽如此,我对日期/时间的标准建议是使用Joda Time,这是一个更好的API.

编辑:短但完整的程序:

import java.text.*;
import java.util.*;

public class Test
{
    public List<String> names;

    public static void main(String [] args)
        throws Exception // Just for simplicity!
    {
        String fromDateString = "Wed Jul 08 17:08:48 GMT 2009";
        DateFormat formatter = new SimpleDateFormat
            ("EEE MMM dd HH:mm:ss zzz yyyy");
        Date fromDate = (Date)formatter.parse(fromDateString);
        TimeZone central = TimeZone.getTimeZone("America/Chicago");
        formatter.setTimeZone(central);
        System.out.println(formatter.format(fromDate));
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:2008年7月8日星期三12:08:48 CDT 2009