首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TimeZone.getTimeZone("CST")返回GMT

TimeZone.getTimeZone("CST")返回GMT
EN

Stack Overflow用户
提问于 2013-06-22 03:18:45
回答 6查看 48.3K关注 0票数 10

我正在将时间从CST转换为本地时间,但是getTimeZone似乎不能正常工作。

代码语言:javascript
复制
    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,下面是我在调试时得到的结果:

代码语言:javascript
复制
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吗?为什么..提前感谢!

编辑:

最后通过使用

代码语言:javascript
复制
simpleDateFormat.setTimeZone(TimeZone.getTimeZone( "GMT-5")); //GMT-5 is for CDT, I found my server is actually using CDT not CST

仍然不知道为什么使用字符串"CST“不能工作...

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-06-22 03:40:26

在getTimeZone的javadoc中:

代码语言:javascript
复制
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?

票数 10
EN

Stack Overflow用户

发布于 2015-09-09 14:28:59

您可以使用"CST6CDT"时区,它将自动为您提供正确的时间,当中部夏令时(CDT)切换回美国中央时区时,反之亦然。

票数 4
EN

Stack Overflow用户

发布于 2015-05-06 17:42:54

以下代码对我很有帮助。

代码语言:javascript
复制
TimeZone tzone = TimeZone.getTimeZone("Singapore");
// set time zone to default
tzone.setDefault(tzone);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17242764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档