Skip to main content

40.6 Time Zone Rules

The default time zone is determined by the TZ environment variable. See System Environment. For example, you can tell Emacs to default to Universal Time with (setenv "TZ" "UTC0"). If TZ is not in the environment, Emacs uses system wall clock time, which is a platform-dependent default time zone.

The set of supported TZ strings is system-dependent. GNU and many other systems support the tzdata database, e.g., ‘"America/New_York"’ specifies the time zone and daylight saving time history for locations near New York City. GNU and most other systems support POSIX-style TZ strings, e.g., ‘"EST+5EDT,M4.1.0/2,M10.5.0/2"’ specifies the rules used in New York from 1987 through 2006. All systems support the string ‘"UTC0"’ meaning Universal Time.

Functions that convert to and from local time accept an optional time zone rule argument, which specifies the conversion’s time zone and daylight saving time history. If the time zone rule is omitted or nil, the conversion uses Emacs’s default time zone. If it is t, the conversion uses Universal Time. If it is wall, the conversion uses the system wall clock time. If it is a string, the conversion uses the time zone rule equivalent to setting TZ to that string. If it is a list (offset abbr), where offset is an integer number of seconds east of Universal Time and abbr is a string, the conversion uses a fixed time zone with the given offset and abbreviation. An integer offset is treated as if it were (offset abbr), where abbr is a numeric abbreviation on POSIX-compatible platforms and is unspecified on MS-Windows.

function current-time-zone \&optional time zone

This function returns a list describing the time zone that the user is in.

The value has the form (offset abbr). Here offset is an integer giving the number of seconds ahead of Universal Time (east of Greenwich). A negative value means west of Greenwich. The second element, abbr, is a string giving an abbreviation for the time zone, e.g., ‘"CST"’ for China Standard Time or for U.S. Central Standard Time. Both elements can change when daylight saving time begins or ends; if the user has specified a time zone that does not use a seasonal time adjustment, then the value is constant through time.

If the operating system doesn’t supply all the information necessary to compute the value, the unknown elements of the list are nil.

The argument time, if given, specifies a time value to analyze instead of the current time. The optional argument zone defaults to the current time zone rule. The operating system limits the range of time and zone values.