【发布时间】:2012-08-03 05:55:46
【问题描述】:
我基本上是在尝试在 Android 中读取 .vcs 文件。它具有以下格式的时区值:
TZ:+05:30
现在我想得到这个值对应的时区名称。意味着在这种情况下它将是加尔各答(印度)。
在android中有实现这个的代码吗?
【问题讨论】:
标签: timezone utc android-calendar vcalendar
我基本上是在尝试在 Android 中读取 .vcs 文件。它具有以下格式的时区值:
TZ:+05:30
现在我想得到这个值对应的时区名称。意味着在这种情况下它将是加尔各答(印度)。
在android中有实现这个的代码吗?
【问题讨论】:
标签: timezone utc android-calendar vcalendar
TimeZone tz = TimeZone.getTimeZone("GMT-06:00");
String tzarr[] = TimeZone.getAvailableIDs(tz.getRawOffset());
for(int i=0;i<tzarr.length;i++)
【讨论】:
(我假设您可以轻松地将文本解析为偏移量。)
一般来说,你不能。像“+05:30”这样的东西只是表示与 UTC在某个特定时间的偏移量。它没有表示偏移量在一年中(或跨历史)的时区内如何变化。例如,在某些时候,欧洲/伦敦时区与非洲/卡萨布兰卡时区的偏移量相同 - 但并非总是如此。
假设这与特定日期/时间相关联,您可以使用 TimeZone.getAvailableIDs,遍历所有时区,检查在特定时刻与 UTC 的偏移量(使用 TimeZone.getOffset(long))并查看哪些时区在正确的时间有正确的偏移量。不过可能有很多这样的区域。
如果您没有有具体的日期/时间,那就更加模糊了。您可以使用getRawOffset 和getDSTSavings 来查看目标偏移量是否是或者任何特定区域的标准或 DST 偏移量 - 尽管请注意,这些调用假定对于在特定时区,DST 偏移量和标准偏移量在历史上保持不变(并非总是如此)。
【讨论】:
getRawOffset 和observesDaylightTime 进行过滤。