用Java将displayName字符串转换为时区



我正在android中编写一个日历应用程序,必须处理时区。其中一个服务器是exchange,并返回如下字符串:

(UTC-12:00) International Date Line West
(UTC+01:00) Brussels, Copenhagen, Madrid, Paris
...

你能建议将上面的字符串转换为Java时区的最佳方法吗?我看到的解决方案是编写一个映射表,以映射到Java时区ID或UTC+/-hh:mm模式的regexp。

想到一个简单的方法:使用时区作为标识符。这并不完美,因为它只会给你一个相同时区的TimeZone。但这只是一个开始。

类似这样的东西:

Pattern pattern = Pattern.compile("UTC([+-]d):dd");
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+3Etc/GMT-11的ID,该ID根据该列表是有效的。

理想情况下,时区ID可以类似于Europe/Brussels,但听起来您没有足够的信息来获得完整的标识符——只有实际的GMT偏移量。

标准免责声明:代码可能无法编译,我没有测试它,等等。

相关内容

  • 没有找到相关文章

最新更新