Java / Joda:从长名称(显示名称)获取TimeZone

时间:2012-05-21 23:04:00

标签: java datetime formatting timezone icalendar

在从Outlook接收iCal事件时,它以长格式指定时区:

DTSTART;TZID=Eastern Standard Time:20120521T180000

也就是说,你从TimeZone.getDisplayName()得到什么。

如何从那个(Eastern Standard Time)转到TimeZone对象?

2 个答案:

答案 0 :(得分:1)

嗯,它不漂亮,但这就是我最终的结果(基本上,迭代可用的TZ,搜索getDisplayName()匹配):

//注意:vTZID是iCalendar格式提供的时区ID //例如“东部标准时间”。如果通过常规方法找不到TZ,我只会这样做 //(即TimeZone.getTimeZone())

boolean foundTZ=false;
for (String availId : TimeZone.getAvailableIDs()){
  if (vTZID.trim().equalsIgnoreCase(TimeZone.getTimeZone(availId).getDisplayName())){
    vTimezone = TimeZone.getTimeZone(availId);
    foundTZ = true;
    break;
  }
}

答案 1 :(得分:0)

你看过olson时区了吗?也可以在joda中找到:http://joda-time.sourceforge.net/timezones.html