2012-08-03 52 views

回答

0

(我假设你可以解析文本偏移很轻松了。)

一般情况下,你不能。类似于“+05:30”仅表示在一个特定时间与UTC 的偏移量。它没有表示在一年中(或跨历史)的时区内偏移量如何变化。例如,在某些时候,欧洲/伦敦时区与非洲/卡萨布兰卡的时差有相同的偏差 - 但并非总是如此。

假设这与特定的日期/时间有关,您可以使用TimeZone.getAvailableIDs,遍历所有时区,检查UTC的偏移量是否在特定时刻(使用TimeZone.getOffset(long)),并查看哪些时区有权限在正确的时间抵消。虽然可能有很多这样的区域。

如果你不要有一个特定的日期/时间,它甚至更模糊。您可以使用getRawOffsetgetDSTSavings看到目标偏移是否是要么标准 DST针对任何特定区偏移量 - 但请注意这些调用假定特定时间区中,DST偏移和标准偏差保持不变跨越历史(这并非总是如此)。

+0

是的这是特定于特定的日期/时间,我们假设偏移不会改变。我们可以假定的手段在全年的时区内保持一致。 – 2012-08-03 06:05:57

+0

@ user1423581:哇 - 这会削减很多时区。在这种情况下,您可以使用'getRawOffset'和'observesDaylightTime'来过滤。 – 2012-08-03 06:07:13

1
 TimeZone tz = TimeZone.getTimeZone("GMT-06:00"); 

     String tzarr[] = TimeZone.getAvailableIDs(tz.getRawOffset()); 
     for(int i=0;i<tzarr.length;i++) 
+0

它将给出与GMT-6相对应的所有值。总计约6个值。 – 2012-08-03 12:27:39