java – TimeZone.getTimeZone(“CST”)返回GMT

我正在将时间从CST转换为当地时间,但getTimeZone似乎无法正常工作.
String cstTime = "2013-06-21 14:00:00";

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
            "yyyy-MM-dd HH:mm:ss");
    simpleDateFormat.setTimeZone(TimeZone.getTimeZone("CST"));

    Date date = null;
    try {
        date = simpleDateFormat.parse(cstTime);
    } catch (ParseException e) {
        System.out.println("Parse time error");
        e.printstacktrace();
    }

    TimeZone destTz = TimeZone.getDefault();//here I should get EDT on my phone
    simpleDateFormat.setTimeZone(destTz);
    String convertedLocalTime = simpleDateFormat.format(date);

    //the converted time I get is  "2013-06-21 10:00:00" 
    //but it should be             "2013-06-21 15:00:00"

它似乎是使用GMT而不是CST,以下是我在调试时得到的:

String abc = TimeZone.getTimeZone("CST").toString();
System.out.println("CST:"+abc);
Output:
I/System.out(19404): CST:java.util.SimpleTimeZone[id=GMT,offset=0,dstSavings=3600000,useDaylight=fals‌​e,startYear=0,startMode=0,startMonth=0,startDay=0,startDayOfWeek=0,startTime=0,en‌​dMode=0,endMonth=0,endDay=0,endDayOfWeek=0,endTime=0]

它是否使用GMT?为什么..
提前致谢!

编辑:

终于通过使用它得到了它

simpleDateFormat.setTimeZone(TimeZone.getTimeZone( "GMT-5")); //GMT-5 is for CDT,I found my server is actually using CDT not CST

仍然不知道为什么使用字符串“CST”无法正常工作…

解决方法

来自getTimeZone的javadoc:
Returns a TimeZone corresponding to the given id,or GMT for unkNown ids. 

An ID can be an Olson name of the form Area/Location,such as America/Los_Angeles. 
The getAvailableIDs() method returns the supported names.

尝试使用getAvailableIDs?

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...