为了获得新加坡时区偏移量,如果我尝试以“新加坡”作为ID,我将得到正确的ID,如下所示:
TimeZone timeZone = TimeZone.getTimeZone("Singapore");
int offset = timeZone.getRawOffset();//It prints 28800000 which is correct
但是,如果按照下面的方式尝试SGT代替新加坡,它将返回GMT的偏移量,因为它不将SGT理解为id:
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中士“这样的约会,那么?
我还不能得到“新加坡”使用上述日期的抵消吗?
想弄清楚我能怎样才能做到。
发布于 2015-02-07 18:46:50
并不是所有三个字母的in都被支持,如文档中所述:
为了与JDK 1.1.x兼容,还支持其他三个字母的时区ID(如"PST“、"CTT”、"AST")。然而,他们的使用是不可取的..。
发布于 2015-02-07 19:25:30
正如@duckstep所言,只支持几个简短的名称。
因此,您必须使用Asia/Singapore
,例如:
码
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));
输出
Asia/Singapore
28800000
Singapore Time
SGT
Singapore Summer Time
SGST
https://stackoverflow.com/questions/28385882
复制相似问题