summaryrefslogtreecommitdiff
path: root/newtzset.3.txt
diff options
context:
space:
mode:
Diffstat (limited to 'newtzset.3.txt')
-rw-r--r--newtzset.3.txt261
1 files changed, 137 insertions, 124 deletions
diff --git a/newtzset.3.txt b/newtzset.3.txt
index ee5c12563624..957a2577bbce 100644
--- a/newtzset.3.txt
+++ b/newtzset.3.txt
@@ -16,25 +16,17 @@ SYNOPSIS
DESCRIPTION
The tzalloc function allocates and returns a timezone object described
- by TZ. If TZ is not a valid timezone description, or if the object
- cannot be allocated, tzalloc returns a null pointer and sets errno.
+ by TZ.
- The tzfree function frees a timezone object tz, which should have been
- successfully allocated by tzalloc. This invalidates any tm_zone
- pointers that tz was used to set.
+ If TZ is a null pointer, tzalloc uses the best available approximation
+ to local (wall clock) time, as specified by the tzfile(5)-format file
+ localtime in the system time conversion information directory.
- The tzset function acts like tzalloc(getenv("TZ")), except it saves any
- resulting timezone object into internal storage that is accessed by
- localtime, localtime_r, and mktime. The anonymous shared timezone
- object is freed by the next call to tzset. If the implied call to
- tzalloc fails, tzset falls back on Universal Time (UT).
+ If TZ is the empty string, tzalloc uses Universal Time (UT), with the
+ abbreviation "UTC" and without leap second correction; please see
+ newctime(3) for more about UT, UTC, and leap seconds.
- If TZ is null, the best available approximation to local (wall clock)
- time, as specified by the tzfile(5)-format file localtime in the system
- time conversion information directory, is used. If TZ is the empty
- string, UT is used, with the abbreviation "UTC" and without leap second
- correction; please see newctime(3) for more about UT, UTC, and leap
- seconds. If TZ is nonnull and nonempty:
+ If TZ is nonnull and nonempty:
if the value begins with a colon, it is used as a pathname of a
file from which to read the time conversion information;
@@ -44,155 +36,176 @@ DESCRIPTION
information, and, if that file cannot be read, is used directly
as a specification of the time conversion information.
- When TZ is used as a pathname, if it begins with a slash, it is used as
- an absolute pathname; otherwise, it is used as a pathname relative to a
- system time conversion information directory. The file must be in the
- format specified in tzfile(5).
+ When TZ contents are used as a pathname, a pathname beginning with "/"
+ is used as-is; otherwise the pathname is relative to a system time
+ conversion information directory. The file must be in the format
+ specified in tzfile(5).
When TZ is used directly as a specification of the time conversion
- information, it must have the following syntax (spaces inserted for
- clarity):
+ information, it must have the following syntax:
stdoffset[dst[offset][,rule]]
Where:
- std and dst Three or more bytes that are the designation for
- the standard (std) or the alternative (dst, such
- as daylight saving time) time zone. Only std is
- required; if dst is missing, then daylight saving
- time does not apply in this locale. Upper- and
- lowercase letters are explicitly allowed. Any
- characters except a leading colon (:), digits,
- comma (,), ASCII minus (-), ASCII plus (+), and
- NUL bytes are allowed. Alternatively, a
- designation can be surrounded by angle brackets <
- and >; in this case, the designation can contain
- any characters other than > and NUL.
+ std and dst
+ Three or more bytes that are the designation for the
+ standard (std) or the alternative (dst, such as daylight
+ saving time) time zone. Only std is required; if dst is
+ missing, then daylight saving time does not apply in this
+ locale. Upper- and lowercase letters are explicitly
+ allowed. Any characters except a leading colon (:),
+ digits, comma (,), ASCII minus (-), ASCII plus (+), and
+ NUL bytes are allowed. Alternatively, a designation can
+ be surrounded by angle brackets < and >; in this case,
+ the designation can contain any characters other than >
+ and NUL.
- offset Indicates the value one must add to the local
- time to arrive at Coordinated Universal Time.
- The offset has the form:
+ offset Indicates the value one must add to the local time to
+ arrive at Coordinated Universal Time. The offset has the
+ form:
- hh[:mm[:ss]]
+ hh[:mm[:ss]]
- The minutes (mm) and seconds (ss) are optional.
- The hour (hh) is required and may be a single
- digit. The offset following std is required. If
- no offset follows dst, daylight saving time is
- assumed to be one hour ahead of standard time.
- One or more digits may be used; the value is
- always interpreted as a decimal number. The hour
- must be between zero and 24, and the minutes (and
- seconds) - if present - between zero and 59. If
- preceded by a "-", the time zone shall be east of
- the Prime Meridian; otherwise it shall be west
- (which may be indicated by an optional preceding
- "+".
+ The minutes (mm) and seconds (ss) are optional. The hour
+ (hh) is required and may be a single digit. The offset
+ following std is required. If no offset follows dst,
+ daylight saving time is assumed to be one hour ahead of
+ standard time. One or more digits may be used; the value
+ is always interpreted as a decimal number. The hour must
+ be between zero and 24, and the minutes (and seconds) -
+ if present - between zero and 59. If preceded by a "-",
+ the time zone shall be east of the Prime Meridian;
+ otherwise it shall be west (which may be indicated by an
+ optional preceding "+".
- rule Indicates when to change to and back from
- daylight saving time. The rule has the form:
+ rule Indicates when to change to and back from daylight saving
+ time. The rule has the form:
- date/time,date/time
+ date/time,date/time
- where the first date describes when the change
- from standard to daylight saving time occurs and
- the second date describes when the change back
- happens. Each time field describes when, in
- current local time, the change to the other time
- is made. As an extension to POSIX, daylight
- saving is assumed to be in effect all year if it
- begins January 1 at 00:00 and ends December 31 at
- 24:00 plus the difference between daylight saving
- and standard time, leaving no room for standard
- time in the calendar.
+ where the first date describes when the change from
+ standard to daylight saving time occurs and the second
+ date describes when the change back happens. Each time
+ field describes when, in current local time, the change
+ to the other time is made. As an extension to
+ POSIX.1-2017, daylight saving is assumed to be in effect
+ all year if it begins January 1 at 00:00 and ends
+ December 31 at 24:00 plus the difference between daylight
+ saving and standard time, leaving no room for standard
+ time in the calendar.
- The format of date is one of the following:
+ The format of date is one of the following:
- Jn The Julian day n (1 <= n <= 365). Leap
- days are not counted; that is, in all
- years - including leap years - February
- 28 is day 59 and March 1 is day 60. It
- is impossible to explicitly refer to
- the occasional February 29.
+ Jn The Julian day n (1 <= n <= 365). Leap days are
+ not counted; that is, in all years - including
+ leap years - February 28 is day 59 and March 1 is
+ day 60. It is impossible to explicitly refer to
+ the occasional February 29.
- n The zero-based Julian day
- (0 <= n <= 365). Leap days are
- counted, and it is possible to refer to
- February 29.
+ n The zero-based Julian day (0 <= n <= 365). Leap
+ days are counted, and it is possible to refer to
+ February 29.
- Mm.n.d The d'th day (0 <= d <= 6) of week n of
- month m of the year (1 <= n <= 5,
- 1 <= m <= 12, where week 5 means "the
- last d day in month m" which may occur
- in either the fourth or the fifth
- week). Week 1 is the first week in
- which the d'th day occurs. Day zero is
- Sunday.
+ Mm.n.d The d'th day (0 <= d <= 6) of week n of month m of
+ the year (1 <= n <= 5, 1 <= m <= 12, where week 5
+ means "the last d day in month m" which may occur
+ in either the fourth or the fifth week). Week 1
+ is the first week in which the d'th day occurs.
+ Day zero is Sunday.
- The time has the same format as offset except
- that POSIX does not allow a leading sign ("-" or
- "+"). As an extension to POSIX, the hours part
- of time can range from -167 through 167; this
- allows for unusual rules such as "the Saturday
- before the first Sunday of March". The default,
- if time is not given, is 02:00:00.
+ The time has the same format as offset except that
+ POSIX.1-2017 does not allow a leading sign ("-" or "+").
+ As an extension to POSIX.1-2017, the hours part of time
+ can range from -167 through 167; this allows for unusual
+ rules such as "the Saturday before the first Sunday of
+ March". The default, if time is not given, is 02:00:00.
Here are some examples of TZ values that directly specify the timezone;
- they use some of the extensions to POSIX.
+ they use some of the extensions to POSIX.1-2017.
- EST5 stands for US Eastern Standard Time (EST), 5 hours behind UT,
+ EST5 stands for US Eastern Standard Time (EST), 5 hours behind UT,
without daylight saving.
<+12>-12<+13>,M11.1.0,M1.2.1/147
stands for Fiji time, 12 hours ahead of UT, springing forward on
- November's first Sunday at 02:00, and falling back on January's
- second Monday at 147:00 (i.e., 03:00 on the first Sunday on or
- after January 14). The abbreviations for standard and daylight
+ November's first Sunday at 02:00, and falling back on January's
+ second Monday at 147:00 (i.e., 03:00 on the first Sunday on or
+ after January 14). The abbreviations for standard and daylight
saving time are "+12" and "+13".
IST-2IDT,M3.4.4/26,M10.5.0
- stands for Israel Standard Time (IST) and Israel Daylight Time
- (IDT), 2 hours ahead of UT, springing forward on March's fourth
- Thursday at 26:00 (i.e., 02:00 on the first Friday on or after
+ stands for Israel Standard Time (IST) and Israel Daylight Time
+ (IDT), 2 hours ahead of UT, springing forward on March's fourth
+ Thursday at 26:00 (i.e., 02:00 on the first Friday on or after
March 23), and falling back on October's last Sunday at 02:00.
<-04>4<-03>,J1/0,J365/25
- stands for permanent daylight saving time, 3 hours behind UT
- with abbreviation "-03". There is a dummy fall-back transition
- on December 31 at 25:00 daylight saving time (i.e., 24:00
- standard time, equivalent to January 1 at 00:00 standard time),
- and a simultaneous spring-forward transition on January 1 at
- 00:00 standard time, so daylight saving time is in effect all
+ stands for permanent daylight saving time, 3 hours behind UT
+ with abbreviation "-03". There is a dummy fall-back transition
+ on December 31 at 25:00 daylight saving time (i.e., 24:00
+ standard time, equivalent to January 1 at 00:00 standard time),
+ and a simultaneous spring-forward transition on January 1 at
+ 00:00 standard time, so daylight saving time is in effect all
year and the initial <-04> is a placeholder.
<-03>3<-02>,M3.5.0/-2,M10.5.0/-1
- stands for time in western Greenland, 3 hours behind UT, where
- clocks follow the EU rules of springing forward on March's last
- Sunday at 01:00 UT (-02:00 local time, i.e., 22:00 the previous
- day) and falling back on October's last Sunday at 01:00 UT
- (-01:00 local time, i.e., 23:00 the previous day). The
- abbreviations for standard and daylight saving time are "-03"
+ stands for time in western Greenland, 3 hours behind UT, where
+ clocks follow the EU rules of springing forward on March's last
+ Sunday at 01:00 UT (-02:00 local time, i.e., 22:00 the previous
+ day) and falling back on October's last Sunday at 01:00 UT
+ (-01:00 local time, i.e., 23:00 the previous day). The
+ abbreviations for standard and daylight saving time are "-03"
and "-02".
- If no rule is present in TZ, the rules specified by the
- tzfile(5)-format file posixrules in the system time conversion
- information directory are used, with the standard and daylight saving
- time offsets from UT replaced by those specified by the offset values
- in TZ.
+ If TZ specifies daylight saving time but does not specify a rule, and
+ the optional tzfile(5)-format file posixrules is present in the system
+ time conversion information directory, the rules in posixrules are
+ used, with the posixrules standard and daylight saving time offsets
+ from UT replaced by those specified by the offset values in TZ.
+ However, the posixrules file is obsolete: if it is present it is only
+ for backward compatibility, and it does not work reliably. Therefore,
+ if a TZ string directly specifies a timezone with daylight saving time,
+ it should specify the daylight saving rules explicitly.
+
+ For compatibility with System V Release 3.1, a semicolon (;) may be
+ used to separate the rule from the rest of the specification; this is
+ an extension to POSIX.
+
+ The tzfree function frees a timezone object tz, which should have been
+ successfully allocated by tzalloc. This invalidates any tm_zone
+ pointers that tz was used to set.
+
+ The tzset function acts like tzalloc(getenv("TZ")), except it saves any
+ resulting timezone object into internal storage that is accessed by
+ localtime, localtime_r, and mktime. The anonymous shared timezone
+ object is freed by the next call to tzset. If the implied call to
+ getenv fails, tzset acts like tzalloc(nullptr); if the implied call to
+ tzalloc fails, tzset falls back on UT.
+
+RETURN VALUE
+ If successful, the tzalloc function returns a nonnull pointer to the
+ newly allocated object. Otherwise, it returns a null pointer and sets
+ errno.
+
+ERRORS
+ EOVERFLOW
+ TZ directly specifies time conversion information, and contains
+ an integer out of machine range or a time zone abbreviation that
+ is too long for this platform.
- For compatibility with System V Release 3.1, a semicolon (;) may be
- used to separate the rule from the rest of the specification.
+ The tzalloc function may also fail and set errno for any of the errors
+ specified for the routines access(2), close(2), malloc(3), open(2), and
+ read(2).
FILES
- /usr/share/zoneinfo timezone information directory
- /usr/share/zoneinfo/localtime local timezone file
- /usr/share/zoneinfo/posixrules default DST rules (obsolete,
- and can cause bugs if present)
+ /etc/localtime local timezone file
+ /usr/share/zoneinfo timezone directory
+ /usr/share/zoneinfo/posixrules default DST rules (obsolete)
/usr/share/zoneinfo/GMT for UTC leap seconds
- If /usr/share/zoneinfo/GMT is absent, UTC leap seconds are loaded from
- /usr/share/zoneinfo/posixrules.
+ If /usr/share/zoneinfo/GMT is absent, UTC leap seconds are loaded from
+ /usr/share/zoneinfo/GMT0 if present.
SEE ALSO
getenv(3), newctime(3), newstrftime(3), time(2), tzfile(5)