mirror of
https://github.com/masscollaborationlabs/emacs.git
synced 2025-07-08 05:09:37 +00:00
Improve time zone documentation
* doc/lispref/os.texi (Time Zone Rules): New section, mostly with material moved here from other sections. * doc/emacs/cmdargs.texi (General Variables): * doc/lispref/os.texi (Time Conversion, Time Parsing): Xref new section. * etc/NEWS, etc/PROBLEMS: * lisp/org/org.el (org-timestamp-format): * src/editfns.c (Fformat_time_string, Fdecode_time) (Fencode_time, Fcurrent_time_string, Fcurrent_time_zone) (Fset_time_zone_rule): When documenting time zone rule strings, mention the TZ environment variable in preference to mentioning the sort-of-internal function set-time-zone-rule.
This commit is contained in:
parent
c23c965bb9
commit
ca50981001
6 changed files with 70 additions and 49 deletions
|
@ -634,8 +634,9 @@ to put temporary files (@pxref{Backup}). Emacs tries to use
|
||||||
@env{TMP}, then @env{TEMP}, and finally @file{c:/temp}.
|
@env{TMP}, then @env{TEMP}, and finally @file{c:/temp}.
|
||||||
@item TZ
|
@item TZ
|
||||||
@vindex TZ, environment variable
|
@vindex TZ, environment variable
|
||||||
This specifies the current time zone and possibly also daylight
|
This specifies the default time zone and possibly also daylight
|
||||||
saving time information. On MS-DOS, if @env{TZ} is not set in the
|
saving time information. @xref{Time Zone Rules,,, elisp, The GNU
|
||||||
|
Emacs Lisp Reference Manual}. On MS-DOS, if @env{TZ} is not set in the
|
||||||
environment when Emacs starts, Emacs defines a default value as
|
environment when Emacs starts, Emacs defines a default value as
|
||||||
appropriate for the country code returned by DOS@. On MS-Windows, Emacs
|
appropriate for the country code returned by DOS@. On MS-Windows, Emacs
|
||||||
does not use @env{TZ} at all.
|
does not use @env{TZ} at all.
|
||||||
|
|
|
@ -19,6 +19,7 @@ terminal and the screen.
|
||||||
* System Environment:: Distinguish the name and kind of system.
|
* System Environment:: Distinguish the name and kind of system.
|
||||||
* User Identification:: Finding the name and user id of the user.
|
* User Identification:: Finding the name and user id of the user.
|
||||||
* Time of Day:: Getting the current time.
|
* Time of Day:: Getting the current time.
|
||||||
|
* Time Zone Rules:: Rules for time zones and daylight saving time.
|
||||||
* Time Conversion:: Converting a time from numeric form to
|
* Time Conversion:: Converting a time from numeric form to
|
||||||
calendrical data and vice versa.
|
calendrical data and vice versa.
|
||||||
* Time Parsing:: Converting a time from numeric form to text
|
* Time Parsing:: Converting a time from numeric form to text
|
||||||
|
@ -1262,7 +1263,7 @@ information may some day be added at the end.
|
||||||
|
|
||||||
The argument @var{time}, if given, specifies a time to format,
|
The argument @var{time}, if given, specifies a time to format,
|
||||||
instead of the current time. The optional argument @var{zone}
|
instead of the current time. The optional argument @var{zone}
|
||||||
defaults to the current time zone rule.
|
defaults to the current time zone rule. @xref{Time Zone Rules}.
|
||||||
|
|
||||||
@example
|
@example
|
||||||
@group
|
@group
|
||||||
|
@ -1299,26 +1300,9 @@ For example, if @var{time} is a number, @code{(time-to-seconds
|
||||||
or rounding errors occur.
|
or rounding errors occur.
|
||||||
@end defun
|
@end defun
|
||||||
|
|
||||||
@defun current-time-zone &optional time zone
|
@node Time Zone Rules
|
||||||
@cindex time zone, current
|
@section Time Zone Rules
|
||||||
This function returns a list describing the time zone that the user is
|
@cindex time zone rules
|
||||||
in.
|
|
||||||
|
|
||||||
The value has the form @code{(@var{offset} @var{name})}. Here
|
|
||||||
@var{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, @var{name}, is a string giving the name of the time
|
|
||||||
zone. Both elements 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 @code{nil}.
|
|
||||||
|
|
||||||
The argument @var{time}, if given, specifies a time value to
|
|
||||||
analyze instead of the current time. The optional argument @var{zone}
|
|
||||||
defaults to the current time zone rule.
|
|
||||||
@end defun
|
|
||||||
|
|
||||||
@vindex TZ, environment variable
|
@vindex TZ, environment variable
|
||||||
The default time zone is determined by the @env{TZ} environment
|
The default time zone is determined by the @env{TZ} environment
|
||||||
|
@ -1327,6 +1311,15 @@ to default to Universal Time with @code{(setenv "TZ" "UTC0")}. If
|
||||||
@env{TZ} is not in the environment, Emacs uses system wall clock time,
|
@env{TZ} is not in the environment, Emacs uses system wall clock time,
|
||||||
which is a platform-dependent default time zone.
|
which is a platform-dependent default time zone.
|
||||||
|
|
||||||
|
The set of supported @env{TZ} strings is system-dependent. GNU and
|
||||||
|
many other systems support the tzdata database, e.g.,
|
||||||
|
@samp{"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 @env{TZ} strings, e.g.,
|
||||||
|
@samp{"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
|
||||||
|
@samp{"UTC0"} meaning Universal Time.
|
||||||
|
|
||||||
@cindex time zone rule
|
@cindex time zone rule
|
||||||
Functions that convert to and from local time accept an optional
|
Functions that convert to and from local time accept an optional
|
||||||
@dfn{time zone rule} argument, which specifies the conversion's time
|
@dfn{time zone rule} argument, which specifies the conversion's time
|
||||||
|
@ -1337,6 +1330,29 @@ If it is @code{t}, the conversion uses Universal Time. If it is
|
||||||
a string, the conversion uses the time zone rule equivalent to setting
|
a string, the conversion uses the time zone rule equivalent to setting
|
||||||
@env{TZ} to that string.
|
@env{TZ} to that string.
|
||||||
|
|
||||||
|
@defun current-time-zone &optional time zone
|
||||||
|
@cindex time zone, current
|
||||||
|
This function returns a list describing the time zone that the user is
|
||||||
|
in.
|
||||||
|
|
||||||
|
The value has the form @code{(@var{offset} @var{abbr})}. Here
|
||||||
|
@var{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, @var{abbr}, is a string giving an abbreviation for the
|
||||||
|
time zone, e.g., @samp{"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 @code{nil}.
|
||||||
|
|
||||||
|
The argument @var{time}, if given, specifies a time value to
|
||||||
|
analyze instead of the current time. The optional argument @var{zone}
|
||||||
|
defaults to the current time zone rule.
|
||||||
|
@end defun
|
||||||
|
|
||||||
@node Time Conversion
|
@node Time Conversion
|
||||||
@section Time Conversion
|
@section Time Conversion
|
||||||
@cindex calendrical information
|
@cindex calendrical information
|
||||||
|
@ -1361,8 +1377,8 @@ as traditional Gregorian years do; for example, the year number
|
||||||
@defun decode-time &optional time zone
|
@defun decode-time &optional time zone
|
||||||
This function converts a time value into calendrical information. If
|
This function converts a time value into calendrical information. If
|
||||||
you don't specify @var{time}, it decodes the current time, and similarly
|
you don't specify @var{time}, it decodes the current time, and similarly
|
||||||
@var{zone} defaults to the current time zone rule. The return
|
@var{zone} defaults to the current time zone rule. @xref{Time Zone Rules}.
|
||||||
value is a list of nine elements, as follows:
|
The return value is a list of nine elements, as follows:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
(@var{seconds} @var{minutes} @var{hour} @var{day} @var{month} @var{year} @var{dow} @var{dst} @var{utcoff})
|
(@var{seconds} @var{minutes} @var{hour} @var{day} @var{month} @var{year} @var{dow} @var{dst} @var{utcoff})
|
||||||
|
@ -1409,6 +1425,7 @@ to stand for years above 1900, or years above 2000, you must alter them
|
||||||
yourself before you call @code{encode-time}.
|
yourself before you call @code{encode-time}.
|
||||||
|
|
||||||
The optional argument @var{zone} defaults to the current time zone rule.
|
The optional argument @var{zone} defaults to the current time zone rule.
|
||||||
|
@xref{Time Zone Rules}.
|
||||||
In addition to the usual time zone rule values, it can also be a list
|
In addition to the usual time zone rule values, it can also be a list
|
||||||
(as you would get from @code{current-time-zone}) or an integer (as
|
(as you would get from @code{current-time-zone}) or an integer (as
|
||||||
from @code{decode-time}), applied without any further alteration for
|
from @code{decode-time}), applied without any further alteration for
|
||||||
|
@ -1452,8 +1469,8 @@ corresponding time value.
|
||||||
|
|
||||||
This function converts @var{time} (or the current time, if
|
This function converts @var{time} (or the current time, if
|
||||||
@var{time} is omitted) to a string according to
|
@var{time} is omitted) to a string according to
|
||||||
@var{format-string}. The conversion uses the time zone rule @var{zone}
|
@var{format-string}. The conversion uses the time zone rule @var{zone}, which
|
||||||
(or the current time zone rule, if omitted). The argument
|
defaults to the current time zone rule. @xref{Time Zone Rules}. The argument
|
||||||
@var{format-string} may contain @samp{%}-sequences which say to
|
@var{format-string} may contain @samp{%}-sequences which say to
|
||||||
substitute parts of the time. Here is a table of what the
|
substitute parts of the time. Here is a table of what the
|
||||||
@samp{%}-sequences mean:
|
@samp{%}-sequences mean:
|
||||||
|
|
10
etc/NEWS
10
etc/NEWS
|
@ -1778,11 +1778,11 @@ quotation marks.
|
||||||
*** Time conversion functions now accept an optional ZONE argument
|
*** Time conversion functions now accept an optional ZONE argument
|
||||||
that specifies the time zone rules for conversion. ZONE is omitted or
|
that specifies the time zone rules for conversion. ZONE is omitted or
|
||||||
nil for Emacs local time, t for Universal Time, 'wall' for system wall
|
nil for Emacs local time, t for Universal Time, 'wall' for system wall
|
||||||
clock time, or a string as in 'set-time-zone-rule' for a time zone
|
clock time, or a string as in the TZ environment variable. The
|
||||||
rule. The affected functions are 'current-time-string',
|
affected functions are 'current-time-string', 'current-time-zone',
|
||||||
'current-time-zone', 'decode-time', and 'format-time-string'. The
|
'decode-time', and 'format-time-string'. The function 'encode-time',
|
||||||
function 'encode-time', which already accepted a simple time zone rule
|
which already accepted a simple time zone rule argument, has been
|
||||||
argument, has been extended to accept all the new forms.
|
extended to accept all the new forms.
|
||||||
|
|
||||||
*** Incompatible change in the third argument of 'format-time-string'.
|
*** Incompatible change in the third argument of 'format-time-string'.
|
||||||
Previously, any non-nil argument was interpreted as specifying Universal Time.
|
Previously, any non-nil argument was interpreted as specifying Universal Time.
|
||||||
|
|
|
@ -2220,11 +2220,11 @@ month names with consistent widths for some locales on some versions
|
||||||
of Windows. This is caused by a deficiency in the underlying system
|
of Windows. This is caused by a deficiency in the underlying system
|
||||||
library function.
|
library function.
|
||||||
|
|
||||||
** Problems with set-time-zone-rule function
|
** Non-US time zones.
|
||||||
|
|
||||||
The function set-time-zone-rule gives incorrect results for many
|
Many non-US time zones are implemented incorrectly. This is due to
|
||||||
non-US timezones. This is due to over-simplistic handling of
|
over-simplistic handling of daylight savings switchovers by the
|
||||||
daylight savings switchovers by the Windows libraries.
|
Windows libraries.
|
||||||
|
|
||||||
** Files larger than 4GB report wrong size in a 32-bit Windows build
|
** Files larger than 4GB report wrong size in a 32-bit Windows build
|
||||||
|
|
||||||
|
|
|
@ -22674,7 +22674,7 @@ time-range, if possible.
|
||||||
|
|
||||||
The optional ZONE is omitted or nil for Emacs local time, t for
|
The optional ZONE is omitted or nil for Emacs local time, t for
|
||||||
Universal Time, `wall' for system wall clock time, or a string as in
|
Universal Time, `wall' for system wall clock time, or a string as in
|
||||||
`set-time-zone-rule' for a time zone rule."
|
the TZ environment variable."
|
||||||
(format-time-string
|
(format-time-string
|
||||||
format
|
format
|
||||||
(apply 'encode-time
|
(apply 'encode-time
|
||||||
|
|
|
@ -1969,10 +1969,10 @@ DEFUN ("format-time-string", Fformat_time_string, Sformat_time_string, 1, 3, 0,
|
||||||
doc: /* Use FORMAT-STRING to format the time TIME, or now if omitted.
|
doc: /* Use FORMAT-STRING to format the time TIME, or now if omitted.
|
||||||
TIME is specified as (HIGH LOW USEC PSEC), as returned by
|
TIME is specified as (HIGH LOW USEC PSEC), as returned by
|
||||||
`current-time' or `file-attributes'. The obsolete form (HIGH . LOW)
|
`current-time' or `file-attributes'. The obsolete form (HIGH . LOW)
|
||||||
is also still accepted.
|
is also still accepted. The optional ZONE is omitted or nil for Emacs
|
||||||
The optional ZONE is omitted or nil for Emacs local time, t for
|
local time, t for Universal Time, `wall' for system wall clock time,
|
||||||
Universal Time, `wall' for system wall clock time, or a string as in
|
or a string as in the TZ environment variable.
|
||||||
`set-time-zone-rule' for a time zone rule.
|
|
||||||
The value is a copy of FORMAT-STRING, but with certain constructs replaced
|
The value is a copy of FORMAT-STRING, but with certain constructs replaced
|
||||||
by text that describes the specified date and time in TIME:
|
by text that describes the specified date and time in TIME:
|
||||||
|
|
||||||
|
@ -2086,7 +2086,7 @@ as from `current-time' and `file-attributes', or nil to use the
|
||||||
current time. The obsolete form (HIGH . LOW) is also still accepted.
|
current time. The obsolete form (HIGH . LOW) is also still accepted.
|
||||||
The optional ZONE is omitted or nil for Emacs local time, t for
|
The optional ZONE is omitted or nil for Emacs local time, t for
|
||||||
Universal Time, `wall' for system wall clock time, or a string as in
|
Universal Time, `wall' for system wall clock time, or a string as in
|
||||||
`set-time-zone-rule' for a time zone rule.
|
the TZ environment variable.
|
||||||
|
|
||||||
The list has the following nine members: SEC is an integer between 0
|
The list has the following nine members: SEC is an integer between 0
|
||||||
and 60; SEC is 60 for a leap second, which only some operating systems
|
and 60; SEC is 60 for a leap second, which only some operating systems
|
||||||
|
@ -2151,9 +2151,9 @@ DEFUN ("encode-time", Fencode_time, Sencode_time, 6, MANY, 0,
|
||||||
This is the reverse operation of `decode-time', which see.
|
This is the reverse operation of `decode-time', which see.
|
||||||
The optional ZONE is omitted or nil for Emacs local time, t for
|
The optional ZONE is omitted or nil for Emacs local time, t for
|
||||||
Universal Time, `wall' for system wall clock time, or a string as in
|
Universal Time, `wall' for system wall clock time, or a string as in
|
||||||
`set-time-zone-rule' for a time zone rule. It can also be a list (as
|
the TZ environment variable. It can also be a list (as from
|
||||||
from `current-time-zone') or an integer (as from `decode-time')
|
`current-time-zone') or an integer (as from `decode-time') applied
|
||||||
applied without consideration for daylight saving time.
|
without consideration for daylight saving time.
|
||||||
|
|
||||||
You can pass more than 7 arguments; then the first six arguments
|
You can pass more than 7 arguments; then the first six arguments
|
||||||
are used as SECOND through YEAR, and the *last* argument is used as ZONE.
|
are used as SECOND through YEAR, and the *last* argument is used as ZONE.
|
||||||
|
@ -2213,7 +2213,7 @@ but this is considered obsolete.
|
||||||
|
|
||||||
The optional ZONE is omitted or nil for Emacs local time, t for
|
The optional ZONE is omitted or nil for Emacs local time, t for
|
||||||
Universal Time, `wall' for system wall clock time, or a string as in
|
Universal Time, `wall' for system wall clock time, or a string as in
|
||||||
`set-time-zone-rule' for a time zone rule. */)
|
the TZ environment variable. */)
|
||||||
(Lisp_Object specified_time, Lisp_Object zone)
|
(Lisp_Object specified_time, Lisp_Object zone)
|
||||||
{
|
{
|
||||||
time_t value = lisp_seconds_argument (specified_time);
|
time_t value = lisp_seconds_argument (specified_time);
|
||||||
|
@ -2290,7 +2290,7 @@ instead of using the current time. The argument should have the form
|
||||||
`current-time' and from `file-attributes'. SPECIFIED-TIME can also
|
`current-time' and from `file-attributes'. SPECIFIED-TIME can also
|
||||||
have the form (HIGH . LOW), but this is considered obsolete.
|
have the form (HIGH . LOW), but this is considered obsolete.
|
||||||
Optional second arg ZONE is omitted or nil for the local time zone, or
|
Optional second arg ZONE is omitted or nil for the local time zone, or
|
||||||
a string as in `set-time-zone-rule'.
|
a string as in the TZ environment variable.
|
||||||
|
|
||||||
Some operating systems cannot provide all this information to Emacs;
|
Some operating systems cannot provide all this information to Emacs;
|
||||||
in this case, `current-time-zone' returns a list containing nil for
|
in this case, `current-time-zone' returns a list containing nil for
|
||||||
|
@ -2331,8 +2331,11 @@ the data it can't find. */)
|
||||||
|
|
||||||
DEFUN ("set-time-zone-rule", Fset_time_zone_rule, Sset_time_zone_rule, 1, 1, 0,
|
DEFUN ("set-time-zone-rule", Fset_time_zone_rule, Sset_time_zone_rule, 1, 1, 0,
|
||||||
doc: /* Set the Emacs local time zone using TZ, a string specifying a time zone rule.
|
doc: /* Set the Emacs local time zone using TZ, a string specifying a time zone rule.
|
||||||
If TZ is nil or `wall', use system wall clock time. If TZ is t, use
|
|
||||||
Universal Time. If TZ is an integer, treat it as in `encode-time'.
|
If TZ is nil or `wall', use system wall clock time; this differs from
|
||||||
|
the usual Emacs convention where nil means current local time. If TZ
|
||||||
|
is t, use Universal Time. If TZ is an integer, treat it as in
|
||||||
|
`encode-time'.
|
||||||
|
|
||||||
Instead of calling this function, you typically want something else.
|
Instead of calling this function, you typically want something else.
|
||||||
To temporarily use a different time zone rule for just one invocation
|
To temporarily use a different time zone rule for just one invocation
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue