Sun Java System Calendar Server 管理指南 |
第 17 章
管理 Calendar Server 时区本附录介绍 Sun ONE Calendar Server 如何定义和处理时区,包含以下内容:
有关时区特性和参数的详细信息,请参阅 RFC 2445,即 Internet 日历管理和计划核心对象规范 (iCalendar):
http://www.ietf.org/rfc/rfc2445.txt
Calendar Server 时区概述timezones.ics 文件中包含 Calendar Server 支持的时区表示。对于 Solaris 操作系统,此文件位于以下目录中:
cal_svr_base/opt/SUNWics5/cal/data
启动时,Calendar Server 将读取 timezones.ics 文件,生成时区数据,然后将数据存储在内存中。这样,在 Calendar Server 运行时,时区数据将一直保存在内存中。因此,如果添加新时区或修改现有的时区,必须停止并重新启动 Calendar Server 才能使所做的更改生效。
timezones.ics 文件中的时区由 TZID 参数标识。例如,Calendar Server 使用 America/Los_Angeles TZID 标识太平洋标准时间 (PST/PDT) 时区,如图 17-1 所示。TZNAME 特性是时区的缩写表示,例如 PST(太平洋标准时间)代表 America/Los_Angeles 时区。
可识别夏令时 (DST) 的时区(例如 America/Los_Angeles)包含两个组成部分:表示标准时间的 STANDARD 和表示 DST 的 DAYLIGHT。X-NSCP-TZCROSS 列表包含一系列日期,用于表明时区何时被更改为(或更改自)DST (DAYLIGHT) 和标准时间 (STANDARD)。
RRULE 特性定义 STANDARD 和 DAYLIGHT 规则的模式。TZOFFSETFROM 和 TZOFFSETTO 特性定义从 DST 更改为标准时间或从标准时间更改为 DST 之后(和之前)的 GMT 偏移。Calendar Express 用户界面使用 X-NSCP-TZCROSS 中的日期来确定何时在时区中显示更改。
包含时区 ID (tzid) 参数的 WCAP 命令应指向 timezones.ics 文件中定义的有效时区。Calendar Server 然后将返回以该时区表示的数据。如果 WCAP 命令指定了无法识别的时区,默认情况下,Calendar Server 将返回以 GMT 时区表示的数据。有关 WCAP 的详细信息,请参阅 Sun Java System Calendar Server 6 2004Q2 Developer's Guide。
图 17-1 显示了 timezones.ics 文件中 America/Los_Angeles 时区的表示。
管理 Calendar Server 时区本节介绍以下主题:
添加新时区
本节介绍如何为 Calendar Server 添加新时区,以便可以在 Calendar Express 用户界面中使用它。例如,您可能需要添加 America/Miami 新时区。
提示 要添加新时区,最简单的方法就是在以下步骤介绍的文件中复制并编辑与要添加的时区类似的时区条目。例如,如果要添加 America/Miami 时区,请复制并编辑每个文件中的 America/New_York 时区条目。
添加新时区
- 在以下文件中添加新时区的时区块:
cal_svr_base/opt/SUNWics5/cal/data/timezones.ics
同样,要添加新时区块,最简单的方法就是复制与要添加的时区类似的现有块(包括夏令时 [DST] 偏移);然后编辑新时区块,对新时区进行所需的更改。如果新时区具有夏令时 (DST),可尝试找到类似的时区。
- 修改以下文件中的 getDisplayNameofTZID 模板:
cal_svr_base/opt/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/opt/SUNWics5/cal/html/change_timezone.xml
cal_svr_base/opt/SUNWics5/cal/html/new_cal.xml
cal_svr_base/opt/SUNWics5/cal/html/new_group.xml在每个文件中添加以下代码行:
<timezone type="TimeZoneType" tzid="TimeZoneArea/TimeZoneName" offset="offset"/>
其中:
TimeZoneType 可以是 americas、europeAfrica 或 asiaPacific。
TimeZoneArea 和 TimeZoneName 是在步骤 2 中定义的。
offset 是新时区比 GMT 时间早 (+) 或晚 (-) 的小时数。例如,如果新时区比 GMT 时间晚四个小时,则偏移值为 -04:00。
例如:
<timezone type="americas" tzid="America/Miami" offset="-05:00" daylightOffset="-04:00"/>
- 如果要将新时区作为用户首选项的默认时区,请修改以下文件中的 icsTimeZone 条目:
cal_svr_base/opt/SUNWics5/cal/html/default_user_prefs.xml
- 要在 Calendar Express 联机帮助中引用新时区,请修改以下文件:
cal_svr_base/opt/SUNWics5/cal/html/language/chcncpt.html
- 停止(如果必要)并重新启动 Calendar Server 以使新时区生效。
修改现有时区
本节介绍如何修改现有时区。例如,可能需要更改时区的名称,例如将“America/Phoenix”更改为“US/Arizona”。
修改现有时区
- 在以下文件中修改要更改的时区的时区块:
cal_svr_base/opt/SUNWics5/cal/data/timezones.ics
如果要更改时区名称,请将 TZID 条目更改为新名称。
- 修改以下文件中的 getDisplayNameofTZID 模板:
cal_svr_base/opt/SUNWics5/cal/html/language/i18n.xsl file
其中:language 指定您的站点使用的语言的目录。例如:en 代表英语,fr 代表法语。
如果要更改名称,请将现有的时区名称更改为新名称。
- 修改以下 XML 文件,对时区进行所需的更改:
cal_svr_base/opt/SUNWics5/cal/html/change_timezone.xml
cal_svr_base/opt/SUNWics5/cal/html/new_cal.xml
cal_svr_base/opt/SUNWics5/cal/html/new_group.xml
有关这些文件中的条目的信息,请参阅添加新时区中的步骤 2 和步骤 3。
- 如果所做的更改影响用户首选项的默认时区,请修改以下文件中的 icsTimeZone 条目:
cal_svr_base/opt/SUNWics5/cal/html/default_user_prefs.xml
- 如果所做的更改影响 Calendar Express 联机帮助,请修改以下文件:
cal_svr_base/opt/SUNWics5/cal/html/language/chcncpt.html
- 停止(如果必要)并重新启动 Calendar Server 以使时区更改生效。