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 です // たとえば、「東部標準時」。// 通常のメソッド (つまり、TimeZone.getTimeZone()) で TZ が見つからない場合にのみ、これを行います。
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