Sun ONE logo     上一章     目录     索引     下一章     
Sun ONE Calendar Server 管理员指南



附录 B   时区


本附录说明 Calendar Server 如何处理时区。亦说明如何添加新时区表或修改 Calendar Server 所提供的时区表。

本附录包含以下几节:


时区管理概述

timezones.ics 文件包含 Calendar Server 支持的时区表示形式。该文件包含 92 个时区,位于 server-root/cal/bin/data 目录中(例如,在 Solaris 系统中为 opt/SUNWics5/cal/bin/data)。

启动时,Calendar Server 会读取 timezones.ics 文件,生成 92 个时区,并将它们以数组的形式存储在内存中。如此,当 Calendar Server 运行时,所有的时区就会保留在内存中。

如果 WCAP 命令包含一个时区 ID (tzid),则它应当引用内存数组中的某个时区。例如,如果 storeeventsfetchcomponents_by_range 等命令指定一个 tzid 参数,则该参数值必须是 92 个时区列表中所定义的某个 tzid。Calendar Server 随即会返回该时区中的数据,而且该时区的日期会应用到所有数据的日期。

如果命令指定了一个无法识别的 tzid,则服务器在默认情况下会返回 GMT 时区。对于该命令返回的所有数据,其日期都将应用 GMT 时间。

有关 WCAP 的更多信息,请参考《Sun ONE Calendar Server Programmer's Manual》。


管理 Calendar Server 时区

本节说明如何添加或修改时区:

要修改 Calendar Server 时区列表,必须编辑位于 server-root/cal/bin/data 目录中的 timezones.ics 文件(例如,在 Solaris 系统中为 opt/SUNWics5/cal/bin/data)。该文件包含 92 个时区的 Calendar Server 格式。

时区由 TZID 属性来标识。例如,Calendar Server 将太平洋地区标准时区 (PST/PDT) 标识为 TZID America/Los_Angeles(如以下示例所示)。使用夏时制的时区通常包含两部分:STANDARD 和 DAYLIGHT。



图 B-1    America/Los_Angeles 时区 

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;19891029T090 000Z;
  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

RRULE 属性定义 STANDARD 和 DAYLIGHT 规则的模式。TZOFFSETFROMTZOFFSETTO 属性定义从 DAYLIGHT 更改到 STANDARD 或从 STANDARD 更改到 DAYLIGHT 前后相对于 GMT 的时差。TZNAME 属性是时区的简化表示形式。有关时区属性的更多信息,请参考 RFC 2445“Internet Calendaring and Scheduling Core Object Specification (iCalendar)”。


添加新时区

  1. 创建一个 TZID 列表中尚未包括的 TZID 名称。

  2. 创建时区的表示形式。

  3. 要支持 Calendar Express 用户界面,必须为新时区生成 X-NSCP-TZCROSS 列表。Calendar Express 用户界面使用 X-NSCP-TZCROSS 中的日期来确定何时显示时区的更改。

    X-NSCP-TZCROSS 列表包含一个日期列表,这些日期会指出从 DAYLIGHT 更改到 STANDARD 和从 STANDARD 更改到 DAYLIGHT 的时间:

    • 奇数日期表示是从 STANDARD 更改到 DAYLIGHT。

    • 偶数日期表示是从 DAYLIGHT 更改到 STANDARD。

  4. 停止 Calendar Server 然后重新启动,将新时区读入内存。


修改现有时区
  1. 修改 TZID 以表示所需的时区数据。

  2. 要支持 Calendar Express 客户端,必须生成已修改时区的 X-NSCP-TZCROSS 列表。有关更多信息,请参见前面的步骤 3

  3. 停止 Calendar Server 然后重新启动,将修改的时区读入内存。

在用户界面中自定义时区

要修改 Calendar Express 用户界面以对时区使用自定义命名方案,必须添加 JavaScript 将新名称映射到 Calendar Server 提供的时区名称。

例如,若要使用名为 US Pacific 的自定义时区表而不使用提供的 America/Los_Angeles 时区表,您必须提供一个程序,将 US Pacific 日期映射到 America/Los_Angeles 表。



备注 除非绝对必要,否则不要修改时区列表。



Calendar Server 时区表

Calendar Server 时区表是在名为 timezones.ics 的纯文本文件中定义的,该文件位于 server-root/cal/bin/data 目录中(例如,opt/SUNWics5/cal/bin/data。此表包括 92 个基于 JDK(Java 开发工具包)1.1 版的时区。

以下的示例显示时区表的前几节。



图 B-2    Calendar Server 时区表 

BEGIN:VTIMEZONE
TZID:Pacific/Apia
BEGIN:STANDARD
DTSTART:19970101T000000
TZOFFSETFROM:-1100
TZOFFSETTO:-1100
TZNAME:WST
TZNAME:SST
TZNAME:NUT
END:STANDARD
END:VTIMEZONE

BEGIN:VTIMEZONE
TZID:Pacific/Honolulu
BEGIN:STANDARD
DTSTART:19970101T000000
TZOFFSETFROM:-1000
TZOFFSETTO:-1000
TZNAME:HST
TZNAME:TKT
TZNAME:TAHT
END:STANDARD
END:VTIMEZONE

BEGIN:VTIMEZONE
TZID:America/Adak
BEGIN:STANDARD
DTSTART:19671025T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
TZOFFSETFROM:-0900
TZOFFSETTO:-1000
TZNAME:HAST
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19870405T020000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
TZOFFSETFROM:-1000
TZOFFSETTO:-0900
TZNAME:HADT
END:DAYLIGHT
X-NSCP-TZCROSS:19880403T120000Z;19881030T110000Z;19890402T120000Z;19891029T110 000Z;
19900401T120000Z;19901028T110000Z;19910407T120000Z;19911027T110000Z;
  19920405T120000Z;19921025T110000Z;19930404T120000Z;19931031T110000Z;
  19940403T120000Z;19941030T110000Z;19950402T120000Z;19951029T110000Z;
  19960407T120000Z;19961027T110000Z;19970406T120000Z;19971026T110000Z;
  19980405T120000Z;19981025T110000Z;19990404T120000Z;19991031T110000Z;
  20000402T120000Z;20001029T110000Z;20010401T120000Z;20011028T110000Z;
  20020407T120000Z;20021027T110000Z;20030406T120000Z;20031026T110000Z;
  20040404T120000Z;20041031T110000Z;20050403T120000Z;20051030T110000Z;
  20060402T120000Z;20061029T110000Z;20070401T120000Z;20071028T110000Z;
  20080406T120000Z;20081026T110000Z;20090405T120000Z;20091025T110000Z;
  20100404T120000Z;20101031T110000Z;20110403T120000Z;20111030T110000Z;
  20120401T120000Z;20121028T110000Z;20130407T120000Z;20131027T110000Z;
  20140406T120000Z;20141026T110000Z;20150405T120000Z;20151025T110000Z;
  20160403T120000Z;20161030T110000Z;20170402T120000Z;20171029T110000Z;
  20180401T120000Z;20181028T110000Z;20190407T120000Z;20191027T110000Z;
  20200405T120000Z;20201025T110000Z;20210404T120000Z;20211031T110000Z;
  20220403T120000Z;20221030T110000Z;20230402T120000Z;20231029T110000Z;
  20240407T120000Z;20241027T110000Z;20250406T120000Z;20251026T110000Z;
  20260405T120000Z;20261025T110000Z;20270404T120000Z;20271031T110000Z;
  20280402T120000Z;20281029T110000Z;20290401T120000Z;20291028T110000Z;
  20300407T120000Z;20301027T110000Z;20310406T120000Z;20311026T110000Z;
  20320404T120000Z;20321031T110000Z;20330403T120000Z;20331030T110000Z;
  20340402T120000Z;20341029T110000Z;20350401T120000Z;20351028T110000Z;
  20360406T120000Z;20361026T110000Z;20370405T120000Z;20371025T110000Z
END:VTIMEZONE


上一章     目录     索引     下一章     
版权所有 2002 Sun Microsystems, Inc. 全权所有。

更新日期 2002 年 8 月 30 日