如何在Android中从数字时区值获取时区名称

4
我想在Android中读取一个.vcs文件,它具有以下格式的时区值:
TZ:+05:30
现在我想获取与此值对应的时区名称。 意思是,在这种情况下,它将是Kolkata(印度)。
是否有在Android中实现此功能的代码?
2个回答

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

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

它将提供所有对应于GMT-6的值。总共大约有6个值。 - Ankit Jain

0

一般而言,你不能。例如 "+05:30" 只是表示一个特定时间的UTC偏移量,并未表达时区在年度(或者历史)上如何改变偏移量。举例来说,伦敦时区和卡萨布兰卡时区有时具有相同的偏移量,但并非总是如此。

假设这与一个特定日期/时间相关联,您可以使用TimeZone.getAvailableIDs遍历所有时区,检查在该特定瞬间从UTC的偏移量是多少(使用TimeZone.getOffset(long)),以查看哪些时区在正确时间具有正确的偏移量。不过有很多这样的时区。

如果您没有特定的日期/时间,那么它就更加模糊不清。您可以使用getRawOffsetgetDSTSavings来查看目标偏移量是否为任何特定区域的标准或夏令时偏移量 - 尽管请注意,这些调用假定对于特定时区,夏令时偏移量和标准偏移量在历史上保持不变(这并不总是正确的)。

是的,这是针对特定的日期/时间的,并且我们假设偏移量不会改变。这意味着我们可以假设在时区内一年四季都保持不变。 - Ankit Jain
哇 - 这样可以缩小很多时区范围。在这种情况下,您可以使用getRawOffsetobservesDaylightTime进行过滤。 - Jon Skeet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接