4

我基本上是在尝试在 Android 中读取 .vcs 文件。它具有以下格式的时区值:

时间:+05:30

现在我想获取与该值对应的时区名称。意味着在这种情况下它将是加尔各答(印度)。

在android中是否有任何代码可以实现这一点?

4

2 回答 2

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

        String tzarr[] = TimeZone.getAvailableIDs(tz.getRawOffset());
        for(int i=0;i<tzarr.length;i++)
于 2012-08-03T12:26:36.977 回答
0

(我假设您可以轻松地将文本解析为偏移量。)

一般来说,你不能。像 "+05:30" 这样的东西只是表示在某个特定时间与 UTC 的偏移量。它没有表示偏移量在一年中(或跨历史)的时区内如何变化。例如,在某些时候,欧洲/伦敦时区与非洲/卡萨布兰卡时区具有相同的偏移量 - 但并非总是如此。

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

如果您没有特定的日期/时间,则更加模糊。您可以使用getRawOffsetandgetDSTSavings查看目标偏移量是任何特定区域的标准偏移量还是DST 偏移量 - 尽管请注意,这些调用假定对于特定时区,DST 偏移量和标准偏移量在历史记录中保持相同(这不是t 总是正确的)。

于 2012-08-03T05:59:50.673 回答