我在android中编写一个日历应用程序,必须处理时区。其中一个服务器是交换并返回字符串,如下所示:
(UTC-12:00) International Date Line West
(UTC+01:00) Brussels, Copenhagen, Madrid, Paris
...
您能否建议将上述字符串转换为Java TimeZone的最佳方法? 我看到的解决方案是编写一个映射表来映射到Java时区ID或者使用UTC +/- hh:mm模式的regexp。
答案 0 :(得分:3)
想到一个简单的方法:使用时区作为标识符。这并不完美,因为它只会给你一个TimeZone
同一个时区。但这是一个开始。
这样的事情:
Pattern pattern = Pattern.compile("UTC([+\-]\d):\d\d");
Matcher tagMatch = pattern.matcher(sourceString);
while (tagMatch.find()) {
String parsed = parseTag(tagMatch.group(1);
TimeZone t= TimeZone.getTimeZone(String.format("Etc/GMT%s", parsed));
}
此构造包含Etc/GMT+3
或Etc/GMT-11
等ID,根据this list有效。
理想情况下,时区ID可能类似于Europe/Brussels
,但听起来您没有足够的信息来获取完整的标识符 - 只有实际的GMT偏移量。
标准免责声明:代码可能无法编译,我没有测试,等等。