この付録では、Calendar Server がタイムゾーンを定義、処理する方法について、次の項目を説明します。
タイムゾーンのプロパティーとパラメータについては、次の Web サイトで『RFC 2445, Internet Calendaring and Scheduling Core Object Specification (iCalendar)』を参照してください。
http://www.ietf.org/rfc/rfc2445.txt
timezones.ics ファイルには、Calendar Server がサポートするタイムゾーン表記が定義されています。このファイルは、次のディレクトリに格納されています。
cal_svr_base/SUNWics5/cal/data
起動時に Calendar Server は timezones.ics ファイルを読み取ってタイムゾーンデータを生成し、そのデータをメモリーに格納します。このため、Calendar Server の稼動中はタイムゾーンデータはメモリー内に維持されます。したがって、新しいタイムゾーンを追加したり、既存のタイムゾーンを変更した場合は、変更が適用されるように Calendar Server を停止して再起動する必要があります。
timezones.ics ファイル内のタイムゾーンは TZID パラメータで識別されます。たとえば、Calendar Server は、例 19–1 に示すように、America/Los_Angeles TZID を使用して太平洋標準時 (PST/PDT) を識別します。TZNAME プロパティーはタイムゾーンの略式表記で、たとえば America/Los_Angeles であれば、PST (Pacific Standard Time、太平洋標準時) となります。
America/Los_Angeles のように夏時間 (DST) が適用されるタイムゾーンには、次の 2 つのサブコンポーネントが含まれます。標準時間用の STANDARD と夏時間用の DAYLIGHT。X-NSCP-TZCROSS リストには、そのタイムゾーンで夏時間 (DAYLIGHT) と標準時間 (STANDARD) が切り替わる日付が含まれます。
RRULE プロパティーは、STANDARD と DAYLIGHT の規則のパターンを定義します。TZOFFSETFROM プロパティーと TZOFFSETTO プロパティーは、夏時間と標準時間が切り替わる前後の GMT からの時間差を定義します。Communications Express のユーザーインタフェースでは、X-NSCP-TZCROSS に指定されている日付を使用して、タイムゾーンの変更をいつ表示するかが決定されます。
タイムゾーンの ID (tzid) パラメータを含む WCAP コマンドは、timezones.ics ファイルに定義されている有効なタイムゾーンを参照する必要があります。Calendar Server は、そのタイムゾーンを使用して日付を返します。WCAP コマンドに不明なタイムゾーンが指定されている場合、デフォルトでは Calendar Server は GMT タイムゾーンの日付を返します。WCAP については、『Sun Java System Calendar Server 6 2005Q4 Developer’s Guide』を参照してください。
次の例は、timezones.ics ファイル内の America/Los_Angeles タイムゾーンの表記を示しています。
BEGIN:VTIMEZONE TZID:America/Los_Angeles BEGIN:STANDARD DTSTART:19671025T020000 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 TZOFFSETFROM:-0700 TZOFFSETTO:-0800 TZNAME:PST END:STANDARD BEGIN:DAYLIGHT DTSTART:19870405T020000 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 TZOFFSETFROM:-0800 TZOFFSETTO:-0700 TZNAME:PDT END:DAYLIGHT X-NSCP-TZCROSS: 19880403T100000Z;19881030T090000Z;19890402T100000Z;19891029T090000Z; 19900401T100000Z;19901028T090000Z;19910407T100000Z;19911027T090000Z; 19920405T100000Z;19921025T090000Z;19930404T100000Z;19931031T090000Z; 19940403T100000Z;19941030T090000Z;19950402T100000Z;19951029T090000Z; 19960407T100000Z;19961027T090000Z;19970406T100000Z;19971026T090000Z; 19980405T100000Z;19981025T090000Z;19990404T100000Z;19991031T090000Z; 20000402T100000Z;20001029T090000Z;20010401T100000Z;20011028T090000Z; 20020407T100000Z;20021027T090000Z;20030406T100000Z;20031026T090000Z; 20040404T100000Z;20041031T090000Z;20050403T100000Z;20051030T090000Z; 20060402T100000Z;20061029T090000Z;20070401T100000Z;20071028T090000Z; 20080406T100000Z;20081026T090000Z;20090405T100000Z;20091025T090000Z; 20100404T100000Z;20101031T090000Z;20110403T100000Z;20111030T090000Z; 20120401T100000Z;20121028T090000Z;20130407T100000Z;20131027T090000Z; 20140406T100000Z;20141026T090000Z;20150405T100000Z;20151025T090000Z; 20160403T100000Z;20161030T090000Z;20170402T100000Z;20171029T090000Z; 20180401T100000Z;20181028T090000Z;20190407T100000Z;20191027T090000Z; 20200405T100000Z;20201025T090000Z;20210404T100000Z;20211031T090000Z; 20220403T100000Z;20221030T090000Z;20230402T100000Z;20231029T090000Z; 20240407T100000Z;20241027T090000Z;20250406T100000Z;20251026T090000Z; 20260405T100000Z;20261025T090000Z;20270404T100000Z;20271031T090000Z; 20280402T100000Z;20281029T090000Z;20290401T100000Z;20291028T090000Z; 20300407T100000Z;20301027T090000Z;20310406T100000Z;20311026T090000Z; 20320404T100000Z;20321031T090000Z;20330403T100000Z;20331030T090000Z; 20340402T100000Z;20341029T090000Z;20350401T100000Z;20351028T090000Z; 20360406T100000Z;20361026T090000Z;20370405T100000Z;20371025T090000Z; 20360406T120000Z;20361026T110000Z;20370405T120000Z;20371025T110000Z END:VTIMEZONE |
ここで説明する内容は次のとおりです。
ここでは、Communications Express ユーザーインタフェースで使用できるように Calendar Server に新しいタイムゾーンを追加する方法について説明します。たとえば、America/Miami 用のタイムゾーンの追加が必要になる場合があります。
新しいタイムゾーンを追加するもっとも簡単な方法は、次の手順で説明する各ファイルで、追加するタイムゾーンに似たタイムゾーンエントリをコピーし、それを編集する方法です。たとえば、America/Miami 用のタイムゾーンを追加するのであれば、各ファイルで America/New_York のタイムゾーンエントリをコピーして編集します。
次のファイルに新しいタイムゾーン用のタイムゾーンブロックを追加します。
cal_svr_base/SUNWics5/cal/data/timezones.ics |
この場合も、新しいタイムゾーンブロックを追加するもっとも簡単な方法は、追加するタイムゾーンと夏時間 (DST) の時間差などが似ている既存のブロックをコピーする方法です。次に、追加するタイムゾーンに合わせて新しいタイムゾーンブロックに変更を加えます。追加するタイムゾーンに夏時間 (DST) が適用される場合は、それに似たブロックを探します。
次のファイルで getDisplayNameofTZID テンプレートを修正します。
cal_svr_base/SUNWics5/cal/html/language/i18n.xsl file |
この language には、サイトで使用する言語のディレクトリを指定します。たとえば、英語であれば en、フランス語であれば fr を指定します。
i18n.xsl ファイルに、次のような新しいエントリを追加します。
<xsl:when test="$tzid=’TimeZoneArea/ TimeZoneName’"TimeZoneArea/ TimeZoneName</xsl:when\> |
それぞれの意味は次のとおりです。
TimeZoneArea には地理的な領域を指定します (Africa、America、Asia、Atlantic、Australia、Europe、または Pacific)。
TimeZoneName には新しいタイムゾーンの名前を指定します。
次に例を示します。
<xsl:when test="$tzid='America/Miami'"\>America/Miami</xsl:when\> |
次の XML ファイルを修正します。
cal_svr_base/SUNWics5/cal/html/change_timezone.xml cal_svr_base/SUNWics5/cal/html/new_cal.xml cal_svr_base/SUNWics5/cal/html/new_group.xml |
それぞれのファイルに次の行を追加します。
<timezone type="TimeZoneType" tzid="TimeZoneArea/TimeZoneName" offset="offset"> |
それぞれの意味は次のとおりです。
TimeZoneType には、"americas"、"europeAfrica"、または "asiaPacific" を指定します。
TimeZoneArea と TimeZoneName は、「新しいタイムゾーンの追加」で定義しています。
offset には、新しいタイムゾーンが GMT と比較して何時間進んでいるか (+)、または遅れているか (-) を指定します。たとえば、新しいタイムゾーンが GMT から4 時間遅れている場合は、時間差として "-04:00" を指定します。
次に例を示します。
<timezone type="americas" tzid="America/Miami" offset="-05:00" daylightOffset="-04:00"> |
新しいタイムゾーンをユーザー設定のデフォルトタイムゾーンにするときは、次のファイルの timezone エントリを変更します。
cal_svr_base/SUNWics5/cal/html/default_user_prefs.xml |
新しいタイムゾーンが適用されるように、Calendar Server を停止し (稼動していた場合)、再起動します。
ここでは、既存のタイムゾーンを変更する方法について説明します。たとえば、「America/Phoenix」というタイムゾーン名から「US/Arizona」への変更が必要になる場合があります。
次のファイルで、変更するタイムゾーンのタイムゾーンブロックを変更します。
cal_svr_base/SUNWics5/cal/data/timezones.ics |
タイムゾーン名を変更するときは、TZID エントリの名前を変更します。
次のファイルで getDisplayNameofTZID テンプレートを修正します。
cal_svr_base/SUNWics5/cal/html/language/i18n.xsl file |
それぞれの意味は次のとおりです。language には、サイトで使用する言語のディレクトリを指定します。たとえば、英語であれば en、フランス語であれば fr を指定します。
タイムゾーン名を変更するときは、既存の名前を変更します。
タイムゾーンの変更に合わせて次の XML ファイルを変更します。
cal_svr_base/SUNWics5/cal/html/change_timezone.xml cal_svr_base/SUNWics5/cal/html/new_cal.xml cal_svr_base/SUNWics5/cal/html/new_group.xml |
これらのファイルのエントリについては、「新しいタイムゾーンの追加」を参照してください。
変更がユーザー設定のデフォルトタイムゾーンに影響するときは、次のファイルの “icsTimeZone” エントリを修正します。
cal_svr_base/SUNWics5/cal/html/default_user_prefs.xml |
タイムゾーンの変更が適用されるように、Calendar Server を停止し (稼動していた場合)、再起動します。