在从 Outlook 接收 iCal 事件时,它以长格式指定时区:
DTSTART;TZID=Eastern Standard Time:20120521T180000
也就是说,您将从 TimeZone.getDisplayName() 获得什么。
我怎样才能从那个 ( Eastern Standard Time
) 转到 TimeZone 对象?
在从 Outlook 接收 iCal 事件时,它以长格式指定时区:
DTSTART;TZID=Eastern Standard Time:20120521T180000
也就是说,您将从 TimeZone.getDisplayName() 获得什么。
我怎样才能从那个 ( Eastern Standard Time
) 转到 TimeZone 对象?
好吧,它不是很漂亮,但这就是我最终得到的结果(基本上,迭代可用的 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;
}
}
你看过奥尔森时区吗?也可在 joda:http: //joda-time.sourceforge.net/timezones.html