3

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

DTSTART;TZID=Eastern Standard Time:20120521T180000

也就是说,您将从 TimeZone.getDisplayName() 获得什么。

我怎样才能从那个 ( Eastern Standard Time) 转到 TimeZone 对象?

4

2 回答 2

2

好吧,它不是很漂亮,但这就是我最终得到的结果(基本上,迭代可用的 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;
  }
}
于 2012-05-22T23:30:52.337 回答
0

你看过奥尔森时区吗?也可在 joda:http: //joda-time.sourceforge.net/timezones.html

于 2012-05-22T11:14:19.417 回答