我基本上正在尝试读取Android中的.vcs文件。它具有以下格式时区值:如何从Android的数字时区值中获取时区名称
TZ:+05:30
现在我想要得到与此对应的值区名称。在这种情况下,意味着加尔各答(印度)。
有什么代码可以在android中实现这个吗?
我基本上正在尝试读取Android中的.vcs文件。它具有以下格式时区值:如何从Android的数字时区值中获取时区名称
TZ:+05:30
现在我想要得到与此对应的值区名称。在这种情况下,意味着加尔各答(印度)。
有什么代码可以在android中实现这个吗?
(我假设你可以解析文本偏移很轻松了。)
一般情况下,你不能。类似于“+05:30”仅表示在一个特定时间与UTC 的偏移量。它没有表示在一年中(或跨历史)的时区内偏移量如何变化。例如,在某些时候,欧洲/伦敦时区与非洲/卡萨布兰卡的时差有相同的偏差 - 但并非总是如此。
假设这与特定的日期/时间有关,您可以使用TimeZone.getAvailableIDs
,遍历所有时区,检查UTC的偏移量是否在特定时刻(使用TimeZone.getOffset(long)
),并查看哪些时区有权限在正确的时间抵消。虽然可能有很多这样的区域。
如果你不要有一个特定的日期/时间,它甚至更模糊。您可以使用getRawOffset
和getDSTSavings
看到目标偏移是否是要么标准或 DST针对任何特定区偏移量 - 但请注意这些调用假定特定时间区中,DST偏移和标准偏差保持不变跨越历史(这并非总是如此)。
TimeZone tz = TimeZone.getTimeZone("GMT-06:00");
String tzarr[] = TimeZone.getAvailableIDs(tz.getRawOffset());
for(int i=0;i<tzarr.length;i++)
它将给出与GMT-6相对应的所有值。总计约6个值。 – 2012-08-03 12:27:39
是的这是特定于特定的日期/时间,我们假设偏移不会改变。我们可以假定的手段在全年的时区内保持一致。 – 2012-08-03 06:05:57
@ user1423581:哇 - 这会削减很多时区。在这种情况下,您可以使用'getRawOffset'和'observesDaylightTime'来过滤。 – 2012-08-03 06:07:13