Sun Java System Calendar Server 6 2005Q4 管理ガイド

第 19 章 Calendar Server のタイムゾーンの管理

この付録では、Calendar Server がタイムゾーンを定義、処理する方法について、次の項目を説明します。

タイムゾーンのプロパティーとパラメータについては、次の Web サイトで『RFC 2445, Internet Calendaring and Scheduling Core Object Specification (iCalendar)』を参照してください。

http://www.ietf.org/rfc/rfc2445.txt

Calendar Server タイムゾーンの概要

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 と夏時間用の DAYLIGHTX-NSCP-TZCROSS リストには、そのタイムゾーンで夏時間 (DAYLIGHT) と標準時間 (STANDARD) が切り替わる日付が含まれます。

RRULE プロパティーは、STANDARDDAYLIGHT の規則のパターンを定義します。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』を参照してください。


例 19–1 timezones.ics ファイル内の America/Los_Angeles タイムゾーンの表記

次の例は、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

Calendar Server タイムゾーンの管理

ここで説明する内容は次のとおりです。

新しいタイムゾーンの追加

ここでは、Communications Express ユーザーインタフェースで使用できるように Calendar Server に新しいタイムゾーンを追加する方法について説明します。たとえば、America/Miami 用のタイムゾーンの追加が必要になる場合があります。


ヒント –

新しいタイムゾーンを追加するもっとも簡単な方法は、次の手順で説明する各ファイルで、追加するタイムゾーンに似たタイムゾーンエントリをコピーし、それを編集する方法です。たとえば、America/Miami 用のタイムゾーンを追加するのであれば、各ファイルで America/New_York のタイムゾーンエントリをコピーして編集します。


Procedure新しいタイムゾーンを追加するには

手順
  1. 次のファイルに新しいタイムゾーン用のタイムゾーンブロックを追加します。


    cal_svr_base/SUNWics5/cal/data/timezones.ics

    この場合も、新しいタイムゾーンブロックを追加するもっとも簡単な方法は、追加するタイムゾーンと夏時間 (DST) の時間差などが似ている既存のブロックをコピーする方法です。次に、追加するタイムゾーンに合わせて新しいタイムゾーンブロックに変更を加えます。追加するタイムゾーンに夏時間 (DST) が適用される場合は、それに似たブロックを探します。

  2. 次のファイルで 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\>
  3. 次の 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" を指定します。

    TimeZoneAreaTimeZoneName は、「新しいタイムゾーンの追加」で定義しています。

    offset には、新しいタイムゾーンが GMT と比較して何時間進んでいるか (+)、または遅れているか (-) を指定します。たとえば、新しいタイムゾーンが GMT から4 時間遅れている場合は、時間差として "-04:00" を指定します。

    次に例を示します。


    <timezone type="americas" tzid="America/Miami" 
       offset="-05:00" daylightOffset="-04:00">
  4. 新しいタイムゾーンをユーザー設定のデフォルトタイムゾーンにするときは、次のファイルの timezone エントリを変更します。


    cal_svr_base/SUNWics5/cal/html/default_user_prefs.xml
  5. 新しいタイムゾーンが適用されるように、Calendar Server を停止し (稼動していた場合)、再起動します。

既存のタイムゾーンの変更

ここでは、既存のタイムゾーンを変更する方法について説明します。たとえば、「America/Phoenix」というタイムゾーン名から「US/Arizona」への変更が必要になる場合があります。

Procedure既存のタイムゾーンを変更するには

手順
  1. 次のファイルで、変更するタイムゾーンのタイムゾーンブロックを変更します。


    cal_svr_base/SUNWics5/cal/data/timezones.ics

    タイムゾーン名を変更するときは、TZID エントリの名前を変更します。

  2. 次のファイルで getDisplayNameofTZID テンプレートを修正します。


    cal_svr_base/SUNWics5/cal/html/language/i18n.xsl file

    それぞれの意味は次のとおりです。language には、サイトで使用する言語のディレクトリを指定します。たとえば、英語であれば en、フランス語であれば fr を指定します。

    タイムゾーン名を変更するときは、既存の名前を変更します。

  3. タイムゾーンの変更に合わせて次の 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

    これらのファイルのエントリについては、「新しいタイムゾーンの追加」を参照してください。

  4. 変更がユーザー設定のデフォルトタイムゾーンに影響するときは、次のファイルの “icsTimeZone” エントリを修正します。


    cal_svr_base/SUNWics5/cal/html/default_user_prefs.xml
  5. タイムゾーンの変更が適用されるように、Calendar Server を停止し (稼動していた場合)、再起動します。