首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从ID获取TimeZone

从ID获取TimeZone
EN

Stack Overflow用户
提问于 2015-02-07 18:38:07
回答 2查看 3.6K关注 0票数 1

为了获得新加坡时区偏移量,如果我尝试以“新加坡”作为ID,我将得到正确的ID,如下所示:

代码语言:javascript
运行
复制
TimeZone timeZone = TimeZone.getTimeZone("Singapore");
    int offset = timeZone.getRawOffset();//It prints 28800000 which is correct

但是,如果按照下面的方式尝试SGT代替新加坡,它将返回GMT的偏移量,因为它不将SGT理解为id:

代码语言:javascript
运行
复制
TimeZone timeZone = TimeZone.getTimeZone("SGT");
    int offset = timeZone.getRawOffset();//It prints 0 which is incorrect and should be 28800000 

有没有办法用"SGT“代替”新加坡“来抵消新加坡的损失?

上述问题不是为ID“美国/洛杉矶”制作的。"PST“和”America/洛杉矶“返回相同的偏移量。

问候

编辑-

如果我有"2015-02-08 11:18中士“这样的约会,那么?

我还不能得到“新加坡”使用上述日期的抵消吗?

想弄清楚我能怎样才能做到。

EN

回答 2

Stack Overflow用户

发布于 2015-02-07 18:46:50

并不是所有三个字母的in都被支持,如文档中所述:

为了与JDK 1.1.x兼容,还支持其他三个字母的时区ID(如"PST“、"CTT”、"AST")。然而,他们的使用是不可取的..。

票数 3
EN

Stack Overflow用户

发布于 2015-02-07 19:25:30

正如@duckstep所言,只支持几个简短的名称。

因此,您必须使用Asia/Singapore,例如:

代码语言:javascript
运行
复制
TimeZone timeZone = TimeZone.getTimeZone("Asia/Singapore");
System.out.println(timeZone.getID());
System.out.println(timeZone.getRawOffset());
System.out.println(timeZone.getDisplayName(false, TimeZone.LONG));
System.out.println(timeZone.getDisplayName(false, TimeZone.SHORT));
System.out.println(timeZone.getDisplayName(true, TimeZone.LONG));
System.out.println(timeZone.getDisplayName(true, TimeZone.SHORT));

输出

代码语言:javascript
运行
复制
Asia/Singapore
28800000
Singapore Time
SGT
Singapore Summer Time
SGST
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28385882

复制
相关文章

相似问题

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