默认时区由环境变量 TZ 决定。See 操作系统环境。例如,你可以通过 (setenv "TZ" "UTC0") 让 Emacs 默认使用协调世界时。若环境中未设置 TZ,Emacs 使用系统挂钟时间,即与平台相关的默认时区。
支持的 TZ 字符串集合因系统而异。GNU 及许多其他系统支持 TZDB 时区,例如 ‘"America/New_York"’ 表示纽约附近地区的时区与夏令时历史。GNU 及大多数系统支持 POSIX 风格的 TZ 字符串,例如 ‘"EST5EDT,M4.1.0,M10.5.0"’ 表示纽约在 1987 至 2006 年间使用的规则。所有系统均支持表示协调世界时的字符串 ‘"UTC0"’。
进行本地时间转换的函数接受可选的 时区规则(time zone rule) 参数,用于指定转换所用的时区与夏令时历史。若时区规则省略或为 nil,转换使用 Emacs 默认时区。若为 t,使用协调世界时。若为 wall,使用系统挂钟时间。若为字符串,转换使用与将 TZ 设为该字符串等价的时区规则。若为列表 (offset abbr),其中 offset 为协调世界时以东的秒数整数,abbr 为字符串,则转换使用带指定偏移与缩写的固定时区。整数 offset 会被视为 (offset abbr),在兼容 POSIX 的平台上 abbr 为数字缩写,在 MS-Windows 上则未指定。
该函数返回一个描述用户所在时区的列表。
返回值格式为 (offset abbr)。其中 offset 为相对于协调世界时(格林威治以东)的秒数整数,负值表示格林威治以西。第二个元素 abbr 为时区缩写字符串,例如 ‘"CST"’ 可表示中国标准时间或美国中部标准时间。夏令时开始或结束时这两个元素均可能改变;若用户指定的时区不使用季节性时间调整,则该值始终不变。
若操作系统未提供计算该值所需的全部信息,列表中的未知元素为 nil。
参数 time(若指定)表示要分析的时间值,而非当前时间。可选参数 zone 默认为当前时区规则。操作系统会限制时间与时区值的范围。