本附錄說明 Calendar Server 如何定義與處理時區,包括:
如需有關時區特性和參數的更多資訊,請參閱 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 使用 America/Los_Angeles TZID 識別太平洋標準時間 (PST/PDT) 時區,如範例 19–1中所示。TZNAME 特性是時區的縮寫表示,例如使用 PST (太平洋沿岸標準時間) 表示 America/Los_Angeles 時區。
識別日光節約時間 (DST) 的時區 (例如 America/Los_Angeles) 包含兩個子元件:STANDARD (標準時間) 及 DAYLIGHT (DST)。X-NSCP-TZCROSS 清單包含一系列指示時區何時該在 DST (DAYLIGHT) 和標準 (STANDARD) 時間之間進行切換變更的日期。
RRULE 特性定義 STANDARD 和 DAYLIGHT 規則的式樣。TZOFFSETFROM 和 TZOFFSETTO 特性定義 DST 至標準或標準至 DST 的變更發生前後與 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」。
以下範例顯示 America/Los_Angeles 時區在 timezones.ics 檔案中的表示。
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 使用者介面中可用。例如,您可能要為 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 為某個地理區域:非洲、美洲、亞洲、大西洋、澳大利亞、歐洲或太平洋。
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 四小時,偏移應為 "-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,以使時區變更生效。