rfc9636.original.xml | rfc9636.xml | |||
---|---|---|---|---|
<?xml version='1.0' encoding='utf-8'?> | <?xml version='1.0' encoding='UTF-8'?> | |||
<!DOCTYPE rfc [ | <!DOCTYPE rfc [ | |||
<!ENTITY nbsp " "> | <!ENTITY nbsp " "> | |||
<!ENTITY zwsp "​"> | <!ENTITY zwsp "​"> | |||
<!ENTITY nbhy "‑"> | <!ENTITY nbhy "‑"> | |||
<!ENTITY wj "⁠"> | <!ENTITY wj "⁠"> | |||
]> | ]> | |||
<?xml-stylesheet type="text/xsl" href="../../rfc2629.xslt"?> | ||||
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
<?rfc toc="yes"?> | ||||
<?rfc symrefs="yes"?> | ||||
<?rfc sortrefs="yes"?> | ||||
<?rfc compact="yes"?> | ||||
<?rfc subcompact="no"?> | ||||
<?rfc tocdepth="3"?> | ||||
<?rfc strict="yes"?> | ||||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" | ||||
docName="draft-murchison-rfc8536bis-15" updates="" | ||||
ipr="trust200902" obsoletes="8536" consensus="true" | ||||
submissionType="IETF" xml:lang="en" tocInclude="true" | ||||
symRefs="true" sortRefs="true" tocDepth="3" version="3"> | ||||
<!-- xml2rfc v2v3 conversion 3.9.0 --> | ||||
<front> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-mu | |||
<title abbrev="TZif"> | rchison-rfc8536bis-15" number="9636" updates="" ipr="trust200902" obsoletes="853 | |||
The Time Zone Information Format (TZif) | 6" consensus="true" submissionType="IETF" xml:lang="en" tocInclude="true" symRef | |||
</title> | s="true" sortRefs="true" tocDepth="3" version="3"> | |||
<seriesInfo name="Internet-Draft" value="draft-murchison-rfc8536bis-15"/> | ||||
<author initials="A.D." surname="Olson" fullname="Arthur David Olson"> | <front> | |||
<organization/> | <title abbrev="TZif">The Time Zone Information Format (TZif)</title> | |||
<seriesInfo name="RFC" value="9636"/> | ||||
<author initials="A." surname="Olson" fullname="Arthur David Olson"> | ||||
<address> | <address> | |||
<email>arthurdavidolson@gmail.com</email> | <email>arthurdavidolson@gmail.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author initials="P." surname="Eggert" fullname="Paul Eggert"> | <author initials="P." surname="Eggert" fullname="Paul Eggert"> | |||
<organization abbrev="UCLA"> | <organization abbrev="UCLA">University of California, Los Angeles</organiz | |||
University of California, Los Angeles | ation> | |||
</organization> | ||||
<address> | <address> | |||
<email>eggert@cs.ucla.edu</email> | <email>eggert@cs.ucla.edu</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author initials="K." surname="Murchison" fullname="Kenneth Murchison"> | <author initials="K." surname="Murchison" fullname="Kenneth Murchison"> | |||
<organization abbrev="Fastmail">Fastmail US LLC</organization> | <organization abbrev="Fastmail">Fastmail US LLC</organization> | |||
<address> | <address> | |||
<email>murch@fastmailteam.com</email> | <email>murch@fastmailteam.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date/> | <date month="November" year="2024"/> | |||
<area>General</area> | ||||
<workgroup>Internet Engineering Task Force (IETF)</workgroup> | ||||
<keyword>time zone</keyword> | <keyword>time zone</keyword> | |||
<keyword>tzdata</keyword> | <keyword>tzdata</keyword> | |||
<keyword>tzif</keyword> | <keyword>tzif</keyword> | |||
<abstract> | <abstract> | |||
<t>This document specifies the Time Zone Information Format (TZif) | <t>This document specifies the Time Zone Information Format (TZif) | |||
for representing and exchanging time zone information, | for representing and exchanging time zone information, | |||
independent of any particular service or protocol. | independent of any particular service or protocol. | |||
Two media types for this format are also defined. | Two media types for this format are also defined. | |||
</t> | </t> | |||
skipping to change at line 96 ¶ | skipping to change at line 77 ¶ | |||
This format was introduced in the 1980s and has evolved since | This format was introduced in the 1980s and has evolved since | |||
then into multiple upward-compatible versions. | then into multiple upward-compatible versions. | |||
There is a wide variety of interoperable software capable of | There is a wide variety of interoperable software capable of | |||
generating and reading files in this format | generating and reading files in this format | |||
<xref target="tz-link" format="default"/>. | <xref target="tz-link" format="default"/>. | |||
</t> | </t> | |||
<t>This specification does not define the source of the data | <t>This specification does not define the source of the data | |||
assembled into a TZif file. | assembled into a TZif file. | |||
One such source is the IANA-hosted time zone database | One such source is the IANA-hosted time zone database | |||
<xref target="RFC6557" format="default"/>.</t> | <xref target="RFC6557" format="default"/>.</t> | |||
<t>This document obsoletes RFC 8536, providing editorial improvements, | <t>This document obsoletes <xref target="RFC8536" format="default"/>, prov iding editorial improvements, | |||
new details, and errata fixes while keeping full compatibility with | new details, and errata fixes while keeping full compatibility with | |||
the interchange format of RFC 8536. | the interchange format of <xref target="RFC8536" format="default"/>. | |||
Additionally, a new version of the format is defined. | Additionally, a new version of the format is defined. | |||
The changes from RFC 8536 are summarized in | The changes from <xref target="RFC8536" format="default"/> are summarized in | |||
<xref target="changes" format="default"/>.</t> | <xref target="changes" format="default"/>.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Conventions Used in This Document</name> | <name>Conventions Used in This Document</name> | |||
<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | ||||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | |||
"MAY", and "OPTIONAL" in this document are to be interpreted as | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
described in BCP 14 <xref target="RFC2119" format="default"/> | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are | |||
<xref target="RFC8174" format="default"/> | to be interpreted as described in BCP 14 <xref target="RFC2119"/> | |||
when, and only when, they appear in all capitals, as shown here. | <xref target="RFC8174"/> when, and only when, they appear in all | |||
</t> | capitals, as shown here. | |||
</t> | ||||
<t>The following terms are used in this document | <t>The following terms are used in this document | |||
(see <xref target="tz-link" format="default"> | (see <xref target="tz-link" format="default"> | |||
"Time zone and daylight saving time data"</xref> | "Time zone and daylight saving time data"</xref> | |||
for more detailed information about civil timekeeping data and | for more detailed information about civil timekeeping data and | |||
practice): | practice): | |||
</t> | </t> | |||
<dl newline="false" spacing="normal"> | <dl newline="false" spacing="normal"> | |||
<dt>Coordinated Universal Time (UTC):</dt> | <dt>Coordinated Universal Time (UTC):</dt> | |||
skipping to change at line 155 ¶ | skipping to change at line 137 ¶ | |||
<dd> | <dd> | |||
A one-second adjustment to keep UTC close to mean solar time | A one-second adjustment to keep UTC close to mean solar time | |||
at the prime meridian | at the prime meridian | |||
(see <xref target="ITU-R-TF.460" format="default"/>). | (see <xref target="ITU-R-TF.460" format="default"/>). | |||
Each inserted or deleted leap second occurs at the end of a | Each inserted or deleted leap second occurs at the end of a | |||
UTC month, that is, a month using the Gregorian calendar and | UTC month, that is, a month using the Gregorian calendar and | |||
the UTC timescale. | the UTC timescale. | |||
</dd> | </dd> | |||
<dt>Leap-Second Correction (LEAPCORR):</dt> | <dt>Leap-Second Correction (LEAPCORR):</dt> | |||
<dd> | <dd> | |||
The value of TAI - UTC - 10 for timestamps after the | The value of "TAI - UTC - 10" for timestamps after the | |||
first leap second, and zero for timestamps before that. | first leap second, and zero for timestamps before that. | |||
The expression "TAI - UTC - 10" comes from the fact | The expression "TAI - UTC - 10" comes from the fact | |||
that TAI - UTC was defined to be 10 just prior to | that TAI - UTC was defined to be 10 just prior to | |||
the first leap second in 1972, so clocks with leap | the first leap second in 1972, so clocks with leap | |||
seconds have a zero LEAPCORR before the first leap | seconds have a zero LEAPCORR before the first leap | |||
second. | second. | |||
</dd> | </dd> | |||
<dt>Local Time:</dt> | <dt>Local Time:</dt> | |||
<dd> | <dd> | |||
Civil time for a particular location. Its offset | Civil time for a particular location. Its offset | |||
from universal time can depend on the date and time of day. | from universal time can depend on the date and time of day. | |||
</dd> | </dd> | |||
<dt>POSIX Epoch:</dt> | <dt>POSIX Epoch:</dt> | |||
<dd> | <dd> | |||
1970-01-01 00:00:00 UTC, the basis for absolute timestamps | 1970-01-01 00:00:00 UTC, the basis for absolute timestamps | |||
in this document. | in this document. | |||
</dd> | </dd> | |||
<dt>Standard Time:</dt> | <dt>Standard Time:</dt> | |||
<dd> | <dd> | |||
The time according to a location's law or practice, | The time according to a location's law or practice, | |||
unadjusted for Daylight Saving Time. | unadjusted for daylight saving time. | |||
</dd> | </dd> | |||
<dt>Time Change:</dt> | <dt>Time Change:</dt> | |||
<dd> | <dd> | |||
<t> | <t> | |||
A change to civil timekeeping practice. It occurs when one | A change to civil timekeeping practice. It occurs when one | |||
or more of the following happen simultaneously: | or more of the following happen simultaneously: | |||
</t> | </t> | |||
<ol spacing="normal" type="1"><li>a change in UT offset</li> | <ol spacing="normal" type="1"> | |||
<li>a change in UT offset</li> | ||||
<li>a change in whether daylight saving time is in effect</li> | <li>a change in whether daylight saving time is in effect</li> | |||
<li>a change in time zone abbreviation</li> | <li>a change in time zone abbreviation</li> | |||
<li>a leap second (i.e., a change in LEAPCORR)</li> | <li>a leap second (i.e., a change in LEAPCORR)</li> | |||
</ol> | </ol> | |||
</dd> | </dd> | |||
<dt>Time Zone Data:</dt> | <dt>Time Zone Data:</dt> | |||
<dd> | <dd> | |||
The <xref target="RFC7808" format="default"> | The <xref target="RFC7808" format="default"> | |||
Time Zone Data Distribution Service (TZDIST)</xref> | Time Zone Data Distribution Service (TZDIST)</xref> | |||
defines "Time zone data" as "data | defines "Time zone data" as "data | |||
that defines a single time zone, including an identifier, | that defines a single time zone, including an identifier, | |||
UTC offset values, DST rules, and other information such as | UTC offset values, DST rules, and other information such as | |||
time zone abbreviations." The interchange format defined in | time zone abbreviations". The interchange format defined in | |||
this document is one such form of time zone data. | this document is one such form of time zone data. | |||
</dd> | </dd> | |||
<dt>Transition Time:</dt> | <dt>Transition Time:</dt> | |||
<dd> | <dd> | |||
The moment of occurrence of a time change that is not a leap | The moment of occurrence of a time change that is not a leap | |||
second. It is identified with a signed integer count of | second. It is identified with a signed integer count of | |||
UNIX leap time seconds since the POSIX epoch. | UNIX leap time seconds since the POSIX epoch. | |||
</dd> | </dd> | |||
<dt>Universal Time (UT):</dt> | <dt>Universal Time (UT):</dt> | |||
<dd> | <dd> | |||
skipping to change at line 260 ¶ | skipping to change at line 241 ¶ | |||
<section anchor="format" numbered="true" toc="default"> | <section anchor="format" numbered="true" toc="default"> | |||
<name>The Time Zone Information Format (TZif)</name> | <name>The Time Zone Information Format (TZif)</name> | |||
<t>The Time Zone Information Format begins with a fixed 44-octet | <t>The Time Zone Information Format begins with a fixed 44-octet | |||
<xref target="header" format="default">version 1 header</xref> | <xref target="header" format="default">version 1 header</xref> | |||
containing a field that specifies the version | containing a field that specifies the version | |||
of the file's format. Readers designed for version N can read | of the file's format. Readers designed for version N can read | |||
version N+1 files without too much trouble; data specific to | version N+1 files without too much trouble; data specific to | |||
version N+1 either appears after version N data so | version N+1 either appears after version N data so | |||
that earlier-version readers can easily ignore later-version | that earlier version readers can easily ignore later version | |||
data they are not designed for, or it appears as a minor | data they are not designed for, or it appears as a minor | |||
extension to version N that version N readers are likely to | extension to version N that version N readers are likely to | |||
tolerate well.</t> | tolerate well.</t> | |||
<t>The version 1 header is followed by a variable-length | <t>The version 1 header is followed by a variable-length | |||
<xref target="data" format="default">version 1 data block</xref> | <xref target="data" format="default">version 1 data block</xref> | |||
containing four-octet (32-bit) transition times and leap-second | containing four-octet (32-bit) transition times and leap-second | |||
occurrences. These 32-bit values are limited to representing | occurrences. These 32-bit values are limited to representing | |||
time changes from 1901-12-13 20:45:52 through 2038-01-19 03:14:07 UT, | time changes from 1901-12-13 20:45:52 through 2038-01-19 03:14:07 UT, | |||
and the version 1 header and data block are present only for backward | and the version 1 header and data block are present only for backward | |||
compatibility with obsolescent readers, as discussed in | compatibility with obsolescent readers, as discussed in | |||
<xref target="issues" format="default"> | <xref target="issues" format="default"> | |||
Common Interoperability Issues</xref>.</t> | "Common Interoperability Issues"</xref>.</t> | |||
<t>Version 1 files terminate after the version 1 data block. | <t>Version 1 files terminate after the version 1 data block. | |||
Files from versions 2 and higher extend the format by appending a second | Files from versions 2 and higher extend the format by appending a second | |||
44-octet version 2+ header, a variable-length version 2+ data block | 44-octet version 2+ header, a variable-length version 2+ data block | |||
containing eight-octet (64-bit) transition times and leap-second | containing eight-octet (64-bit) transition times and leap-second | |||
occurrences, and a variable-length | occurrences, and a variable-length | |||
<xref target="footer" format="default">footer</xref>. | <xref target="footer" format="default">footer</xref>. | |||
These 64-bit values can represent times approximately 292 | These 64-bit values can represent times approximately 292 | |||
billion years into the past or future.</t> | billion years into the past or future.</t> | |||
<t> | <t> | |||
NOTE: All multi-octet integer values MUST be stored in | NOTE: All multi-octet integer values <bcp14>MUST</bcp14> be stored in | |||
network octet order format (high-order octet first, otherwise | network octet order format (high-order octet first, otherwise | |||
known as big-endian), with all bits significant. Signed | known as big-endian), with all bits significant. Signed | |||
integer values MUST be represented using two's complement. | integer values <bcp14>MUST</bcp14> be represented using two's complement . | |||
</t> | </t> | |||
<t>A TZif file is structured as follows:</t> | <t>A TZif file is structured as follows:</t> | |||
<figure> | <figure> | |||
<name>General Format of TZif Files</name> | <name>General Format of TZif Files</name> | |||
<artwork type="ascii-art" align="center" name="" alt=""><![CDATA[ | <artwork align="center" name="" alt=""><![CDATA[ | |||
Version 1 Versions 2+ | Version 1 Versions 2+ | |||
+-------------+ +-------------+ | +-------------+ +-------------+ | |||
| Version 1 | | Version 1 | | | Version 1 | | Version 1 | | |||
| Header | | Header | | | Header | | Header | | |||
+-------------+ +-------------+ | +-------------+ +-------------+ | |||
| Version 1 | | Version 1 | | | Version 1 | | Version 1 | | |||
| Data Block | | Data Block | | | Data Block | | Data Block | | |||
+-------------+ +-------------+ | +-------------+ +-------------+ | |||
| Version 2+ | | | Version 2+ | | |||
| Header | | | Header | | |||
skipping to change at line 321 ¶ | skipping to change at line 302 ¶ | |||
</figure> | </figure> | |||
<section anchor="header" numbered="true" toc="default"> | <section anchor="header" numbered="true" toc="default"> | |||
<name>TZif Header</name> | <name>TZif Header</name> | |||
<t>A TZif header is structured as follows | <t>A TZif header is structured as follows | |||
(the lengths of multi-octet fields are shown in parentheses):</t> | (the lengths of multi-octet fields are shown in parentheses):</t> | |||
<figure> | <figure> | |||
<name>TZif Header</name> | <name>TZif Header</name> | |||
<artwork type="ascii-art" align="center" name="" alt=""><![CDATA[ | <artwork align="center" name="" alt=""><![CDATA[ | |||
+---------------+---+ | +---------------+---+ | |||
| magic (4) |ver| | | magic (4) |ver| | |||
+---------------+---+---------------------------------------+ | +---------------+---+---------------------------------------+ | |||
| [unused - reserved for future use] (15) | | | [unused - reserved for future use] (15) | | |||
+---------------+---------------+---------------+-----------+ | +---------------+---------------+---------------+-----------+ | |||
| isutcnt (4) | isstdcnt (4) | leapcnt (4) | | | isutcnt (4) | isstdcnt (4) | leapcnt (4) | | |||
+---------------+---------------+---------------+ | +---------------+---------------+---------------+ | |||
| timecnt (4) | typecnt (4) | charcnt (4) | | | timecnt (4) | typecnt (4) | charcnt (4) | | |||
+---------------+---------------+---------------+ | +---------------+---------------+---------------+ | |||
]]></artwork> | ]]></artwork> | |||
skipping to change at line 347 ¶ | skipping to change at line 328 ¶ | |||
<dd> | <dd> | |||
The four-octet <xref target="RFC20" format="default">ASCII</xref> | The four-octet <xref target="RFC20" format="default">ASCII</xref> | |||
sequence "TZif" (0x54 0x5A 0x69 0x66), | sequence "TZif" (0x54 0x5A 0x69 0x66), | |||
which identifies the file as utilizing the Time Zone | which identifies the file as utilizing the Time Zone | |||
Information Format. | Information Format. | |||
</dd> | </dd> | |||
<dt>ver(sion):</dt> | <dt>ver(sion):</dt> | |||
<dd> | <dd> | |||
<t> | <t> | |||
An octet identifying the version of the | An octet identifying the version of the | |||
file's format. The value MUST be one of the following: | file's format. The value <bcp14>MUST</bcp14> be one of the follow ing: | |||
</t> | </t> | |||
<dl newline="false" spacing="normal"> | <ul spacing="normal"> | |||
<dt>NUL (0x00)</dt> | <li><t>NUL (0x00) Version 1 - The file contains only the version 1 | |||
<dd> | header and | |||
Version 1 - The file contains only the version 1 | data block. Version 1 files <bcp14>MUST NOT</bcp14> contain a | |||
header and data block. | version 2+ header, data block, or footer.</t></li> | |||
Version 1 files MUST NOT contain a version 2+ header, | <li><t>'2' (0x32) Version 2 - The file <bcp14>MUST</bcp14> | |||
data block, or footer. | contain the version 1 header and data block, a version 2+ header | |||
</dd> | and data block, and a footer. The TZ string in the <xref | |||
<dt>'2' (0x32)</dt> | target="footer" format="default">footer</xref>, if non-empty, | |||
<dd> | <bcp14>MUST</bcp14> strictly adhere to the requirements for the | |||
Version 2 - The file MUST contain the version 1 | TZ environment variable as defined in Section 8.3 of the "Base | |||
header and data block, a version 2+ header and data | Definitions" volume of <xref target="POSIX" format="default"/> | |||
block, and a footer. | and <bcp14>MUST</bcp14> encode the POSIX portable character set | |||
The TZ string in the | as ASCII. The leap-second records <bcp14>MUST NOT</bcp14> be | |||
<xref target="footer" format="default">footer</xref>, if | <xref target="truncation" format="default"> truncated at the | |||
nonempty, MUST strictly adhere to the | start</xref> and <bcp14>MUST NOT</bcp14> contain an expiration | |||
requirements for the TZ environment variable | time.</t></li> | |||
as defined in | <li><t>'3' (0x33) Version 3 - The file <bcp14>MUST</bcp14> | |||
Section 8.3 of the "Base Definitions" volume of | conform to all version 2 requirements, except that any TZ string | |||
<xref target="POSIX" format="default"/> | in the <xref target="footer" format="default">footer</xref> | |||
and MUST encode the POSIX portable character set as | <bcp14>MAY</bcp14> use the TZ string extension <xref | |||
ASCII. | target="tzstrext" format="default"> described | |||
The leap-second records MUST NOT be | below</xref>.</t></li> | |||
<xref target="truncation" format="default"> | <li><t>'4' (0x34) Version 4 - The file <bcp14>MUST</bcp14> | |||
truncated at the start</xref>, | conform to all version 3 requirements, except that the | |||
and MUST NOT contain an expiration time. | leap-second records <bcp14>MAY</bcp14> be truncated at the | |||
</dd> | start and <bcp14>MAY</bcp14> contain an expiration | |||
<dt>'3' (0x33)</dt> | time.</t></li> | |||
<dd> | </ul></dd> | |||
Version 3 - The file MUST conform to all version 2 | ||||
requirements, except that any TZ string in the | ||||
<xref target="footer" format="default">footer</xref> | ||||
MAY use the TZ string extension | ||||
<xref target="tzstrext" format="default"> | ||||
described below</xref>. | ||||
</dd> | ||||
<dt>'4' (0x34)</dt> | ||||
<dd> | ||||
Version 4 - The file MUST conform to all version 3 | ||||
requirements, except that the leap-second records | ||||
MAY be truncated at the start, and | ||||
MAY contain an expiration time. | ||||
</dd> | ||||
</dl> | ||||
</dd> | ||||
<dt>isutcnt:</dt> | <dt>isutcnt:</dt> | |||
<dd> | <dd> | |||
A four-octet unsigned integer specifying the number of | A four-octet unsigned integer specifying the number of | |||
UT/local indicators contained in the data block -- | UT/local indicators contained in the data block -- | |||
MUST either be zero or equal to "typecnt". | <bcp14>MUST</bcp14> either be zero or equal to "typecnt". | |||
</dd> | </dd> | |||
<dt>isstdcnt:</dt> | <dt>isstdcnt:</dt> | |||
<dd> | <dd> | |||
A four-octet unsigned integer specifying the number of | A four-octet unsigned integer specifying the number of | |||
standard/wall indicators contained in the data block -- | standard/wall indicators contained in the data block -- | |||
MUST either be zero or equal to "typecnt". | <bcp14>MUST</bcp14> either be zero or equal to "typecnt". | |||
</dd> | </dd> | |||
<dt>leapcnt:</dt> | <dt>leapcnt:</dt> | |||
<dd> | <dd> | |||
A four-octet unsigned integer specifying the number of | A four-octet unsigned integer specifying the number of | |||
leap-second records contained in the data block. | leap-second records contained in the data block. | |||
</dd> | </dd> | |||
<dt>timecnt:</dt> | <dt>timecnt:</dt> | |||
<dd> | <dd> | |||
A four-octet unsigned integer specifying the number of | A four-octet unsigned integer specifying the number of | |||
transition times contained in the data block. | transition times contained in the data block. | |||
</dd> | </dd> | |||
<dt>typecnt:</dt> | <dt>typecnt:</dt> | |||
<dd> | <dd> | |||
A four-octet unsigned integer specifying the number of | A four-octet unsigned integer specifying the number of | |||
local time type records contained in the data block -- | local time type records contained in the data block -- | |||
MUST NOT be zero. | <bcp14>MUST NOT</bcp14> be zero. | |||
(Although local time type records convey no useful | (Although local time type records convey no useful | |||
information in files that have nonempty TZ strings but | information in files that have non-empty TZ strings but | |||
no transitions, at least one such record is nevertheless | no transitions, at least one such record is nevertheless | |||
required because many TZif readers reject files that | required because many TZif readers reject files that | |||
have zero time types.) | have zero time types.) | |||
</dd> | </dd> | |||
<dt>charcnt:</dt> | <dt>charcnt:</dt> | |||
<dd> | <dd> | |||
A four-octet unsigned integer specifying the total number | A four-octet unsigned integer specifying the total number | |||
of octets used by the set of time zone designations | of octets used by the set of time zone designations | |||
contained in the data block - MUST NOT be zero. | contained in the data block -- <bcp14>MUST NOT</bcp14> be zero. | |||
The count includes the trailing NUL (0x00) octet at the | The count includes the trailing NUL (0x00) octet at the | |||
end of the last time zone designation. | end of the last time zone designation. | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
<t>Although the version 1 and 2+ headers have the same format, | <t>Although the version 1 and 2+ headers have the same format, | |||
magic number, and version fields, their count | magic number, and version fields, their count | |||
fields may differ, because the version 1 data can be a subset of | fields may differ, because the version 1 data can be a subset of | |||
the version 2+ data.</t> | the version 2+ data.</t> | |||
</section> | </section> | |||
skipping to change at line 465 ¶ | skipping to change at line 429 ¶ | |||
<t>In the version 1 data block, time values are 32 bits | <t>In the version 1 data block, time values are 32 bits | |||
(TIME_SIZE = 4 octets). In the version 2+ data block, present | (TIME_SIZE = 4 octets). In the version 2+ data block, present | |||
only in version 2 and higher files, time values are 64 bits | only in version 2 and higher files, time values are 64 bits | |||
(TIME_SIZE = 8 octets).</t> | (TIME_SIZE = 8 octets).</t> | |||
<t>The data block is structured as follows | <t>The data block is structured as follows | |||
(the lengths of multi-octet fields are shown in parentheses):</t> | (the lengths of multi-octet fields are shown in parentheses):</t> | |||
<figure> | <figure> | |||
<name>TZif Data Block</name> | <name>TZif Data Block</name> | |||
<artwork type="ascii-art" align="center" name="" alt=""><![CDATA[ | <artwork align="center" name="" alt=""><![CDATA[ | |||
+---------------------------------------------------------+ | +---------------------------------------------------------+ | |||
| transition times (timecnt x TIME_SIZE) | | | transition times (timecnt x TIME_SIZE) | | |||
+---------------------------------------------------------+ | +---------------------------------------------------------+ | |||
| transition types (timecnt) | | | transition types (timecnt) | | |||
+---------------------------------------------------------+ | +---------------------------------------------------------+ | |||
| local time type records (typecnt x 6) | | | local time type records (typecnt x 6) | | |||
+---------------------------------------------------------+ | +---------------------------------------------------------+ | |||
| time zone designations (charcnt) | | | time zone designations (charcnt) | | |||
+---------------------------------------------------------+ | +---------------------------------------------------------+ | |||
| leap-second records (leapcnt x (TIME_SIZE + 4)) | | | leap-second records (leapcnt x (TIME_SIZE + 4)) | | |||
skipping to change at line 494 ¶ | skipping to change at line 458 ¶ | |||
<t>The elements of the data block are defined as follows:</t> | <t>The elements of the data block are defined as follows:</t> | |||
<dl newline="false" spacing="normal"> | <dl newline="false" spacing="normal"> | |||
<dt>transition times:</dt> | <dt>transition times:</dt> | |||
<dd> | <dd> | |||
A series of four- or eight-octet UNIX leap time values sorted | A series of four- or eight-octet UNIX leap time values sorted | |||
in strictly ascending order. | in strictly ascending order. | |||
Each value is used as a transition time at which the rules | Each value is used as a transition time at which the rules | |||
for computing local time may change. | for computing local time may change. | |||
The number of time values is specified by the "timecnt" | The number of time values is specified by the "timecnt" | |||
field in the header. | field in the header. | |||
Each time value SHOULD be at least -2**59. | Each time value <bcp14>SHOULD</bcp14> be at least -2<sup>59</sup>. | |||
(-2**59 is the greatest negated power of 2 that predates | (-2<sup>59</sup> is the greatest negated power of 2 that predates | |||
the Big Bang, and avoiding earlier timestamps works | the Big Bang, and avoiding earlier timestamps works | |||
around known TZif reader bugs relating to outlandishly | around known TZif reader bugs relating to outlandishly | |||
negative timestamps.) | negative timestamps.) | |||
</dd> | </dd> | |||
<dt>transition types:</dt> | <dt>transition types:</dt> | |||
<dd> | <dd> | |||
A series of one-octet unsigned integers specifying the | A series of one-octet unsigned integers specifying the | |||
type of local time of the corresponding transition time. | type of local time of the corresponding transition time. | |||
These values serve as zero-based indices into the array | These values serve as zero-based indices into the array | |||
of local time type records. | of local time type records. | |||
The number of type indices is specified by the "timecnt" | The number of type indices is specified by the "timecnt" | |||
field in the header. | field in the header. | |||
Each type index MUST be in the range [0, "typecnt" - 1]. | Each type index <bcp14>MUST</bcp14> be in the range [0, "typecnt" - 1]. | |||
</dd> | </dd> | |||
<dt>local time type records:</dt> | <dt>local time type records:</dt> | |||
<dd> | <dd> | |||
<t> | <t> | |||
A series of six-octet records specifying a local time | A series of six-octet records specifying a local time | |||
type. | type. | |||
The number of records is specified by the "typecnt" | The number of records is specified by the "typecnt" | |||
field in the header. | field in the header. | |||
Each record has the following format | Each record has the following format | |||
(the lengths of multi-octet fields are shown in parentheses): | (the lengths of multi-octet fields are shown in parentheses): | |||
</t> | </t> | |||
<artwork type="ascii-art" name="" align="left" alt=""><![CDATA[ | <artwork name="" align="left" alt=""><![CDATA[ | |||
+---------------+---+---+ | +---------------+---+---+ | |||
| utoff (4) |dst|idx| | | utoff (4) |dst|idx| | |||
+---------------+---+---+ | +---------------+---+---+ | |||
]]></artwork> | ]]></artwork> | |||
<dl newline="false" spacing="normal"> | <dl newline="false" spacing="normal"> | |||
<dt>utoff:</dt> | <dt>utoff:</dt> | |||
<dd> | <dd> | |||
A four-octet signed integer specifying the number of | A four-octet signed integer specifying the number of | |||
seconds to be added to UT in order to determine local | seconds to be added to UT in order to determine local | |||
time. The value MUST NOT be -2**31 and SHOULD be in | time. The value <bcp14>MUST NOT</bcp14> be -2<sup>31</sup> and | |||
the range [-89999, 93599] (i.e., its value SHOULD be | <bcp14>SHOULD</bcp14> be in | |||
the range [-89999, 93599] (i.e., its value <bcp14>SHOULD</bcp1 | ||||
4> be | ||||
more than -25 hours and less than 26 hours). | more than -25 hours and less than 26 hours). | |||
Avoiding -2**31 allows 32-bit clients to negate | Avoiding -2<sup>31</sup> allows 32-bit clients to negate | |||
the value without overflow. | the value without overflow. | |||
Restricting it to [-89999, 93599] allows easy support by | Restricting it to [-89999, 93599] allows easy support by | |||
implementations that already support the | implementations that already support the | |||
POSIX-required range [-24:59:59, 25:59:59]. | POSIX-required range [-24:59:59, 25:59:59]. | |||
</dd> | </dd> | |||
<dt>(is)dst:</dt> | <dt>(is)dst:</dt> | |||
<dd> | <dd> | |||
A one-octet value indicating whether local | A one-octet value indicating whether local | |||
time should be considered Daylight Saving Time (DST). | time should be considered Daylight Saving Time (DST). | |||
The value MUST be 0 or 1. | The value <bcp14>MUST</bcp14> be 0 or 1. | |||
A value of one (1) indicates that this type of time is DST. | A value of one (1) indicates that this type of time is DST. | |||
A value of zero (0) indicates that this time type | A value of zero (0) indicates that this time type | |||
is standard time. | is standard time. | |||
</dd> | </dd> | |||
<dt>(desig)idx:</dt> | <dt>(desig)idx:</dt> | |||
<dd> | <dd> | |||
A one-octet unsigned integer specifying a zero-based | A one-octet unsigned integer specifying a zero-based | |||
index into the series of time zone designation octets, | index into the series of time zone designation octets, | |||
thereby selecting a particular designation string. | thereby selecting a particular designation string. | |||
Each index MUST be in the range [0, "charcnt" - 1]; it | Each index <bcp14>MUST</bcp14> be in the range [0, "charcnt" - 1]; it | |||
designates the NUL&nbhy;terminated string of octets | designates the NUL&nbhy;terminated string of octets | |||
starting at position "idx" in the time zone | starting at position "idx" in the time zone | |||
designations. (This string MAY be empty.) A NUL | designations. (This string <bcp14>MAY</bcp14> be empty.) A N | |||
octet MUST exist in the time zone designations at or | UL | |||
octet <bcp14>MUST</bcp14> exist in the time zone designations | ||||
at or | ||||
after position "idx". | after position "idx". | |||
If the designation string is "-00", the time type is a | If the designation string is "-00", the time type is a | |||
placeholder indicating that local time is unspecified. | placeholder indicating that local time is unspecified. | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
</dd> | </dd> | |||
<dt>time zone designations:</dt> | <dt>time zone designations:</dt> | |||
<dd> | <dd> | |||
A series of octets constituting an array of | A series of octets constituting an array of | |||
NUL&nbhy;terminated (0x00) time zone designation strings. | NUL&nbhy;terminated (0x00) time zone designation strings. | |||
The total number of octets is specified by the | The total number of octets is specified by the | |||
"charcnt" field in the header. | "charcnt" field in the header. | |||
Two designations MAY overlap if one is a | Two designations <bcp14>MAY</bcp14> overlap if one is a | |||
suffix of the other. | suffix of the other. | |||
The character encoding of time zone designation strings | The character encoding of time zone designation strings | |||
is not specified; however, | is not specified; however, | |||
see <xref target="interop" format="default"/> | see <xref target="interop" format="default"/> | |||
of this document. | of this document. | |||
</dd> | </dd> | |||
<dt>leap-second records:</dt> | <dt>leap-second records:</dt> | |||
<dd> | <dd> | |||
<t> | <t> | |||
A series of eight- or twelve-octet records specifying | A series of eight- or twelve-octet records specifying | |||
skipping to change at line 593 ¶ | skipping to change at line 557 ¶ | |||
The records are sorted by the occurrence time in | The records are sorted by the occurrence time in | |||
strictly ascending order. | strictly ascending order. | |||
The number of records is specified by the | The number of records is specified by the | |||
"leapcnt" field in the header. | "leapcnt" field in the header. | |||
Each record has one of the following structures | Each record has one of the following structures | |||
(the lengths of multi-octet fields are shown in parentheses): | (the lengths of multi-octet fields are shown in parentheses): | |||
</t> | </t> | |||
<dl newline="false" spacing="normal"> | <dl newline="false" spacing="normal"> | |||
<dt>Version 1 Data Block:</dt> | <dt>Version 1 Data Block:</dt> | |||
<dd> | <dd> | |||
<artwork type="ascii-art" name="" align="left" alt=""><![CDATA[ | <artwork name="" align="left" alt=""><![CDATA[ | |||
+---------------+---------------+ | +---------------+---------------+ | |||
| occur (4) | corr (4) | | | occur (4) | corr (4) | | |||
+---------------+---------------+ | +---------------+---------------+ | |||
]]></artwork> | ]]></artwork> | |||
</dd> | </dd> | |||
<dt>version 2+ Data Block:</dt> | <dt>version 2+ Data Block:</dt> | |||
<dd> | <dd> | |||
<artwork type="ascii-art" name="" align="left" alt=""><![CDATA[ | <artwork name="" align="left" alt=""><![CDATA[ | |||
+---------------+---------------+---------------+ | +---------------+---------------+---------------+ | |||
| occur (8) | corr (4) | | | occur (8) | corr (4) | | |||
+---------------+---------------+---------------+ | +---------------+---------------+---------------+ | |||
]]></artwork> | ]]></artwork> | |||
</dd> | </dd> | |||
</dl> | ||||
<dl newline="false" spacing="normal"> | ||||
<dt>occur(rence):</dt> | <dt>occur(rence):</dt> | |||
<dd> | <dd> | |||
A four- or eight-octet UNIX leap time value specifying the | A four- or eight-octet UNIX leap time value specifying the | |||
time at which a leap-second correction occurs | time at which a leap-second correction occurs | |||
or at which the leap-second table expires. | or at which the leap-second table expires. | |||
The first value, if present, MUST be nonnegative, | The first value, if present, <bcp14>MUST</bcp14> be non-negative | |||
and each leap second MUST occur at the end of a UTC | , | |||
and each leap second <bcp14>MUST</bcp14> occur at the end of a U | ||||
TC | ||||
month. | month. | |||
</dd> | </dd> | |||
<dt>corr(ection):</dt> | <dt>corr(ection):</dt> | |||
<dd> | <dd> | |||
<t> | <t> | |||
A four-octet signed integer specifying the value | A four-octet signed integer specifying the value | |||
of LEAPCORR on or after the occurrence. | of LEAPCORR on or after the occurrence. | |||
If "leapcnt" is zero, LEAPCORR is zero for all timestamps; | If "leapcnt" is zero, LEAPCORR is zero for all timestamps. | |||
otherwise, for timestamps before the first occurrence time, | If "leapcnt" is nonzero, | |||
LEAPCORR is zero if the first correction is one (1) | for timestamps before the first occurrence time, | |||
or minus one (-1), | LEAPCORR is zero if the first correction is one (1) or minus | |||
and is unspecified otherwise (which can happen only in files | one (-1) and is unspecified otherwise (which can happen only | |||
<xref target="truncation" format="default"> | in files <xref target="truncation" format="default"> | |||
truncated at the start</xref>). | truncated at the start</xref>). | |||
</t> | </t> | |||
<t> | <t> | |||
The first leap second is a positive leap second if and | The first leap second is a positive leap second if and only if | |||
only if its correction is positive. | its | |||
Each correction after the first MUST differ from the | correction is positive. Each correction after the first | |||
previous correction by either | <bcp14>MUST</bcp14> differ from the previous correction by | |||
one (1) for a positive leap second or | either one (1) for a positive leap second or minus one (-1) | |||
minus one (-1) for a negative leap second, | for a negative leap second, except that in version 4 files | |||
except that in version 4 files with two or more leap-second | with two or more leap-second records, the correction value | |||
records, the correction value of the last two records | of the last two records <bcp14>MAY</bcp14> be the same, with | |||
MAY be the same, with the occurrence of last record | the occurrence of last record indicating the expiration time | |||
indicating the expiration time of the leap-second table. | of the leap-second table. | |||
</t> | </t> | |||
<t> | <t> | |||
The leap-second table expiration time is the time at | The leap-second table expiration time is the time at | |||
which the table no longer records the presence or | which the table no longer records the presence or | |||
absence of future leap-second corrections, and | absence of future leap-second corrections, and | |||
post-expiration timestamps can not be accurately calculated. | post-expiration timestamps cannot be accurately calculated. | |||
For example, a leap-second table published in | For example, a leap-second table published in | |||
January, which predicts the presence or absence of a | January, which predicts the presence or absence of a | |||
leap second at June's end, might expire in | leap second at June's end, might expire in | |||
mid-December because it is not known when the next leap | mid-December because it is not known when the next leap | |||
second will occur. | second will occur. | |||
</t> | </t> | |||
<t> | <t> | |||
If leap seconds become permanently | If leap seconds become permanently | |||
discontinued, as requested by the | discontinued, as requested by the | |||
<xref target="CGPM-2022-R4">General Conference | <xref target="CGPM-2022-R4">General Conference | |||
on Weights and Measures</xref>, leap-second tables | on Weights and Measures</xref>, leap-second tables | |||
published after the discontinuation time | published after the discontinuation time | |||
SHOULD NOT expire, since they will not be updated in | <bcp14>SHOULD NOT</bcp14> expire, since they will not be updat ed in | |||
the foreseeable future. | the foreseeable future. | |||
</t> | </t> | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
</dd> | </dd> | |||
<dt>standard/wall indicators:</dt> | <dt>standard/wall indicators:</dt> | |||
<dd anchor="stdwall"> | <dd anchor="stdwall"> | |||
A series of one-octet values indicating whether | A series of one-octet values indicating whether | |||
the transition times associated with local time types were | the transition times associated with local time types were | |||
specified as standard time or wall-clock time. | specified as standard time or wall-clock time. | |||
Each value MUST be 0 or 1. | Each value <bcp14>MUST</bcp14> be 0 or 1. | |||
A value of one (1) indicates standard time. The value | A value of one (1) indicates standard time. The value | |||
MUST be set to one (1) if the corresponding | <bcp14>MUST</bcp14> be set to one (1) if the corresponding | |||
UT/local indicator is set to one (1). | UT/local indicator is set to one (1). | |||
A value of zero (0) indicates wall time. | A value of zero (0) indicates wall time. | |||
The number of values is specified by the "isstdcnt" | The number of values is specified by the "isstdcnt" | |||
field in the header. | field in the header. | |||
If "isstdcnt" is zero (0), all transition times | If "isstdcnt" is zero (0), all transition times | |||
associated with local time types are assumed to be | associated with local time types are assumed to be | |||
specified as wall time. | specified as wall time. | |||
</dd> | </dd> | |||
<dt>UT/local indicators:</dt> | <dt>UT/local indicators:</dt> | |||
<dd anchor="utlocal"> | <dd anchor="utlocal"> | |||
A series of one-octet values indicating whether | A series of one-octet values indicating whether | |||
the transition times associated with local time types were | the transition times associated with local time types were | |||
specified as UT or local time. | specified as UT or local time. | |||
Each value MUST be 0 or 1. | Each value <bcp14>MUST</bcp14> be 0 or 1. | |||
A value of one (1) indicates UT, | A value of one (1) indicates UT, | |||
and the corresponding standard/wall indicator MUST also | and the corresponding standard/wall indicator <bcp14>MUST</bcp14> also | |||
be set to one (1). | be set to one (1). | |||
A value of zero (0) indicates local time. | A value of zero (0) indicates local time. | |||
The number of values is specified by the "isutcnt" | The number of values is specified by the "isutcnt" | |||
field in the header. | field in the header. | |||
If "isutcnt" is zero (0), all transition times | If "isutcnt" is zero (0), all transition times | |||
associated with local time types are assumed to be | associated with local time types are assumed to be | |||
specified as local time. | specified as local time. | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
<t>The type corresponding to a transition time specifies local | <t>The type corresponding to a transition time specifies local | |||
time for timestamps starting at the given transition time and | time for timestamps starting at the given transition time and | |||
continuing up to, but not including, the next transition time. | continuing up to, but not including, the next transition time. | |||
Local time for timestamps before the first transition is | Local time for timestamps before the first transition is | |||
specified by the first time type (time type 0). | specified by the first time type (time type 0). | |||
Local time for timestamps on or after the last transition is | Local time for timestamps on or after the last transition is | |||
specified by the TZ string in the | specified by the TZ string in the | |||
<xref target="footer" format="default">footer</xref> | <xref target="footer" format="default">footer</xref> | |||
if present and nonempty; otherwise, it is unspecified. | if present and non-empty; otherwise, it is unspecified. | |||
If there are no transitions, local time for all timestamps is | If there are no transitions, local time for all timestamps is | |||
specified by the TZ string in the footer if present and | specified by the TZ string in the footer if present and | |||
nonempty; otherwise, it is specified by time type 0. | non-empty; otherwise, it is specified by time type 0. | |||
A time type with a designation string of "-00" represents an | A time type with a designation string of "-00" represents an | |||
unspecified local time. | unspecified local time. | |||
</t> | </t> | |||
<t>A given pair of standard/wall and UT/local indicators is | <t>A given pair of standard/wall and UT/local indicators is | |||
used to designate whether the corresponding transition time | used to designate whether the corresponding transition time | |||
was specified as UT, standard time, or wall-clock time. | was specified as UT, standard time, or wall-clock time. | |||
There are only three combinations of the two | There are only three combinations of the two | |||
indicators, given that the standard/wall value MUST be one | indicators, given that the standard/wall value <bcp14>MUST</bcp14> be on e | |||
(1) if the UT/local value is one (1). | (1) if the UT/local value is one (1). | |||
This information can be useful if the transition times in a | This information can be useful if the transition times in a | |||
TZif file need to be transformed into transitions | TZif file need to be transformed into transitions | |||
appropriate for another time zone (e.g. when calculating | appropriate for another time zone (e.g., when calculating | |||
transition times for a simple POSIX-like TZ string such as | transition times for a simple POSIX-like TZ string such as | |||
"AKST9AKDT").</t> | "AKST9AKDT").</t> | |||
<t>In order to eliminate unused space in a TZif file, every | <t>In order to eliminate unused space in a TZif file, every | |||
nonzero local time type index SHOULD appear at least once in the | nonzero local time type index <bcp14>SHOULD</bcp14> appear at least once in the | |||
transition type array. | transition type array. | |||
Likewise, every octet in the time zone designations array | Likewise, every octet in the time zone designations array | |||
SHOULD be used by at least one time type record.</t> | <bcp14>SHOULD</bcp14> be used by at least one time type record.</t> | |||
</section> | </section> | |||
<section anchor="footer" numbered="true" toc="default"> | <section anchor="footer" numbered="true" toc="default"> | |||
<name>TZif Footer</name> | <name>TZif Footer</name> | |||
<t>The TZif footer is structured as follows | <t>The TZif footer is structured as follows | |||
(the lengths of multi-octet fields are shown in parentheses):</t> | (the lengths of multi-octet fields are shown in parentheses):</t> | |||
<figure> | <figure> | |||
<name>TZif Footer</name> | <name>TZif Footer</name> | |||
<artwork type="ascii-art" align="center" name="" alt=""><![CDATA[ | <artwork align="center" name="" alt=""><![CDATA[ | |||
+---+--------------------+---+ | +---+--------------------+---+ | |||
| NL| TZ string (0...) |NL | | | NL| TZ string (0...) |NL | | |||
+---+--------------------+---+ | +---+--------------------+---+ | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<t>The elements of the footer are defined as follows:</t> | <t>The elements of the footer are defined as follows:</t> | |||
<dl newline="false" spacing="normal"> | <dl newline="false" spacing="normal"> | |||
<dt>NL:</dt> | <dt>NL:</dt> | |||
<dd> | <dd> | |||
skipping to change at line 774 ¶ | skipping to change at line 736 ¶ | |||
The string is either empty or uses the expanded format | The string is either empty or uses the expanded format | |||
of the "TZ" environment variable as defined in | of the "TZ" environment variable as defined in | |||
Section 8.3 of the "Base Definitions" volume of | Section 8.3 of the "Base Definitions" volume of | |||
<xref target="POSIX" format="default"/> with ASCII | <xref target="POSIX" format="default"/> with ASCII | |||
encoding, possibly utilizing the | encoding, possibly utilizing the | |||
<xref target="tzstrext" format="default"> | <xref target="tzstrext" format="default"> | |||
extension described below</xref> | extension described below</xref> | |||
in version 3 and higher files. | in version 3 and higher files. | |||
If the string is empty, the corresponding information is | If the string is empty, the corresponding information is | |||
not available. | not available. | |||
If the string is nonempty and one or more transitions | If the string is non-empty and one or more transitions | |||
appear in the version 2+ data, the string MUST be | appear in the version 2+ data, the string <bcp14>MUST</bcp14> be | |||
consistent with the last version 2+ transition. In other words, | consistent with the last version 2+ transition. In other words, | |||
evaluating the TZ string at the time of the last | evaluating the TZ string at the time of the last | |||
transition should yield the same time type as was specified in | transition should yield the same time type as was specified in | |||
the last transition. | the last transition. | |||
The string MUST NOT contain NUL octets or be | The string <bcp14>MUST NOT</bcp14> contain NUL octets or be | |||
NUL&nbhy;terminated, and it | NUL&nbhy;terminated, and it | |||
SHOULD NOT begin with the ':' (colon) character. | <bcp14>SHOULD NOT</bcp14> begin with the ":" (colon) character. | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
<t>The TZif footer is present only in version 2 and higher files, | <t>The TZif footer is present only in version 2 and higher files, | |||
as the obsolescent version 1 format was designed before the | as the obsolescent version 1 format was designed before the | |||
need for a footer was apparent.</t> | need for a footer was apparent.</t> | |||
<section anchor="permdst" numbered="true" toc="default"> | <section anchor="permdst" numbered="true" toc="default"> | |||
<name>All-Year Daylight Saving Time</name> | <name>All-Year Daylight Saving Time</name> | |||
<t>DST is considered to be in effect all year if its UT | <t>DST is considered to be in effect all year if its UT | |||
offset is less than (i.e., west of) that of standard time, | offset is less than (i.e., west of) that of standard time, | |||
and it starts January 1 at 00:00 and ends December 31 at | and it starts January 1 at 00:00 and ends December 31 at | |||
24:00 minus the difference between standard and daylight | 24:00 minus the difference between standard and daylight | |||
saving time, leaving no room for standard time | saving time, leaving no room for standard time | |||
in the calendar. | in the calendar. | |||
<xref target="POSIX" format="default"/> implies, but does not | <xref target="POSIX" format="default"/> implies but does not | |||
explicitly state this, so it is spelled out here for clarity. | explicitly state this, so it is spelled out here for clarity. | |||
</t> | </t> | |||
<dl newline="true" spacing="normal"> | <dl newline="true" spacing="normal"> | |||
<dt>Example: XXX3EDT4,0/0,J365/23</dt> | <dt>Example: XXX3EDT4,0/0,J365/23</dt> | |||
<dd> | <dd> | |||
This represents a time zone that is perpetually 4 hours | This represents a time zone that is perpetually 4 hours | |||
west of UT and is abbreviated "EDT". | west of UT and is abbreviated "EDT". | |||
The "XXX" is ignored. | The "XXX" is ignored. | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
<section anchor="tzstrext" numbered="true" toc="default"> | <section anchor="tzstrext" numbered="true" toc="default"> | |||
<name>TZ String Extension</name> | <name>TZ String Extension</name> | |||
<t>The TZ string in a version 3 or higher TZif file MAY use the | <t>The TZ string in a version 3 or higher TZif file | |||
following extension to POSIX TZ strings. | <bcp14>MAY</bcp14> use the following extension to POSIX TZ strings. | |||
This extension is described using the terminology of | This extension is described using the terminology of Section 8.3 of | |||
Section 8.3 of the "Base Definitions" volume of | the "Base Definitions" volume of <xref target="POSIX" | |||
<xref target="POSIX" format="default"/>. | format="default"/>.</t> | |||
</t> | <t>The hours part of the transition times may be signed and range | |||
from -167 through 167 (-167 <= hh <= 167) instead of the | ||||
<ul spacing="normal"> | POSIX-required unsigned values from 0 through 24.</t> | |||
<li> | <dl newline="true" spacing="normal"> | |||
<t>The hours part of the transition times may be | <dt>Example: <-03>3<-02>,M3.5.0/-2,M10.5.0/-1</dt> | |||
signed and range from -167 through 167 | <dd>This represents a time zone that observes daylight saving time | |||
(-167 <= hh <= 167) instead of | from 22:00 on the day before March's last Sunday until 23:00 on | |||
the POSIX-required unsigned values from 0 through 24. | the day before October's last Sunday. Standard time is 3 hours | |||
</t> | west of UT and is abbreviated "-03"; daylight saving time is 2 | |||
<dl newline="true" spacing="normal"> | hours west of UT and is abbreviated "-02".</dd> | |||
<dt>Example: <-03>3<-02>,M3.5.0/-2,M10.5.0/-1</dt> | </dl> | |||
<dd> | ||||
This represents a time zone that observes daylight | ||||
saving time from 22:00 on the day before March's last | ||||
Sunday until 23:00 on the day before October's last | ||||
Sunday. Standard time is 3 hours west of UT and is | ||||
abbreviated "-03"; daylight saving time is 2 hours | ||||
west of UT and is abbreviated "-02". | ||||
</dd> | ||||
</dl> | ||||
</li> | ||||
</ul> | ||||
<t>A TZif file that uses the above extension | <t>A TZif file that uses the above extension | |||
MUST be designated as version 3 (or higher), | <bcp14>MUST</bcp14> be designated as version 3 (or higher), | |||
even if a future version of POSIX adopts this extension.</t> | even if a future version of POSIX adopts this extension.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="interop" numbered="true" toc="default"> | <section anchor="interop" numbered="true" toc="default"> | |||
<name>Interoperability Considerations</name> | <name>Interoperability Considerations</name> | |||
<t>The following practices help ensure the interoperability of TZif | <t>The following practices help ensure the interoperability of TZif | |||
applications.</t> | applications.</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>Version 1 files are considered a legacy format and | <li>Version 1 files are considered a legacy format and | |||
SHOULD NOT be generated, as they do not support transition | <bcp14>SHOULD NOT</bcp14> be generated, as they do not support transitio n | |||
times after the year 2038.</li> | times after the year 2038.</li> | |||
<li>Readers that understand only version 1 MUST ignore | <li>Readers that understand only version 1 <bcp14>MUST</bcp14> ignore | |||
any data that extends beyond the calculated end of the version | any data that extends beyond the calculated end of the version | |||
1 data block.</li> | 1 data block.</li> | |||
<li>Other than version 1, writers SHOULD generate the lowest | <li>Other than version 1, writers <bcp14>SHOULD</bcp14> generate the low est | |||
version number needed by a file's data. | version number needed by a file's data. | |||
This helps interoperability with older readers. | This helps interoperability with older readers. | |||
For example, a writer | For example, a writer | |||
SHOULD generate a version 4 file only if its leap-second table | <bcp14>SHOULD</bcp14> generate a version 4 file only if its leap-second table | |||
either expires or is truncated at the start. Likewise, a | either expires or is truncated at the start. Likewise, a | |||
writer not generating a version 4 file SHOULD generate a | writer not generating a version 4 file <bcp14>SHOULD</bcp14> generate a | |||
version 3 file only if the TZ string extension is necessary to | version 3 file only if the TZ string extension is necessary to | |||
accurately model transition times.</li> | accurately model transition times.</li> | |||
<li>To save space, writers of version 2+ files MAY output a | <li>To save space, writers of version 2+ files <bcp14>MAY</bcp14> output a | |||
placeholder version 1 data block with all counts zero except | placeholder version 1 data block with all counts zero except | |||
that "typecnt" and "charcnt" are both one (1). | that "typecnt" and "charcnt" are both one (1). | |||
If this is done, obsolescent version-1-only readers MUST | If this is done, obsolescent version-1-only readers <bcp14>MUST</bcp14> | |||
interpret these files as lacking time changes and time zone | interpret these files as lacking time changes and time zone | |||
abbreviations.</li> | abbreviations.</li> | |||
<li>Unless the version 1 data block is a placeholder, | <li>Unless the version 1 data block is a placeholder, | |||
the sequence of timestamps defined by the version 1 | the sequence of timestamps defined by the version 1 | |||
header and data block SHOULD be a contiguous sub-sequence | header and data block <bcp14>SHOULD</bcp14> be a contiguous sub-sequence | |||
of the timestamps defined by the version 2+ header and data | of the timestamps defined by the version 2+ header and data | |||
block, and by the footer. | block and by the footer. | |||
This guideline helps obsolescent version 1 readers | This guideline helps obsolescent version 1 readers | |||
agree with current readers about timestamps within the | agree with current readers about timestamps within the | |||
contiguous sub-sequence.</li> | contiguous sub-sequence.</li> | |||
<li>When a TZif file contains a leap-second table expiration | <li>When a TZif file contains a leap-second table expiration | |||
time, TZif readers SHOULD either refuse to process | time, TZif readers <bcp14>SHOULD</bcp14> either refuse to process | |||
post-expiration timestamps, or process them as if the expiration | post-expiration timestamps or process them as if the expiration | |||
time did not exist (possibly with an error indication). | time did not exist (possibly with an error indication). | |||
This lessens disagreement among implementations when | This lessens disagreement among implementations when | |||
processing far-future timestamps that cannot yet be handled | processing far-future timestamps that cannot yet be handled | |||
exactly.</li> | exactly.</li> | |||
<li>Time zone designations MUST consist of at least three (3) | <li>Time zone designations <bcp14>MUST</bcp14> consist of at least three (3) | |||
and no more than six (6) ASCII characters from the set of | and no more than six (6) ASCII characters from the set of | |||
alphanumerics, '-', and '+'. | alphanumerics, "-", and "+". | |||
This is compatible with POSIX requirements for | This is compatible with POSIX requirements for | |||
time zone abbreviations.</li> | time zone abbreviations.</li> | |||
<li>A reader that encounters a time zone designation containing | <li>A reader that encounters a time zone designation containing | |||
bytes other than ASCII alphanumerics, '-', and '+' SHOULD | bytes other than ASCII alphanumerics, "-", and "+" <bcp14>SHOULD</bcp14> | |||
act if the designation instead contained a signed numeric string | act if the designation instead contained a signed numeric string | |||
derived from the UT offset, for example, "-10" and "+0530" to | derived from the UT offset, for example, "-10" and "+0530" to | |||
indicate 10 hours west and 5.5 hours east of Greenwich, | indicate 10 hours west and 5.5 hours east of Greenwich, | |||
respectively.</li> | respectively.</li> | |||
<li>When reading a version 2 or higher file, readers | <li>When reading a version 2 or higher file, readers | |||
SHOULD ignore the version 1 header and data block except for | <bcp14>SHOULD</bcp14> ignore the version 1 header and data block except for | |||
the purpose of skipping over them. | the purpose of skipping over them. | |||
This improves compatibility among readers of nonconforming | This improves compatibility among readers of non-conforming | |||
files where version 2+ data is not upward compatible with | files where version 2+ data is not upward compatible with | |||
version 1.</li> | version 1.</li> | |||
<li>Readers SHOULD calculate the total lengths of the | <li>Readers <bcp14>SHOULD</bcp14> calculate the total lengths of the | |||
headers and data blocks and check that they all fit within | headers and data blocks and check that they all fit within | |||
the actual file size, as part of a validity check for the file.</li> | the actual file size, as part of a validity check for the file.</li> | |||
<li> | <li> | |||
<t>When a TZif file is used in a MIME message entity, it SHOULD | <t>When a TZif file is used in a MIME message entity, it <bcp14>SHOULD </bcp14> | |||
be indicated by one of the following media types:</t> | be indicated by one of the following media types:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li> | <li> | |||
<xref target="tzif-leap" format="default"> | <xref target="tzif-leap" format="default"> | |||
"application/tzif-leap"</xref> | "application/tzif-leap"</xref> | |||
to indicate that leap-second records are included in the | to indicate that leap-second records are included in the | |||
TZif data as necessary (none are necessary if the file | TZif data as necessary (none are necessary if the file | |||
is truncated to a range that precedes the first leap | is truncated to a range that precedes the first leap | |||
second).</li> | second).</li> | |||
<li> | <li> | |||
<xref target="tzif" format="default">"application/tzif"</xref> | <xref target="tzif" format="default">"application/tzif"</xref> | |||
to indicate that leap-second records are not included in the | to indicate that leap-second records are not included in the | |||
TZif data; "leapcnt" in the header(s) MUST be zero (0).</li> | TZif data; "leapcnt" in the header(s) <bcp14>MUST</bcp14> be zero (0). </li> | |||
</ul> | </ul> | |||
</li> | </li> | |||
<li><t>Common interoperability issues and possible workarounds | ||||
<li>Common interoperability issues and possible workarounds | are described in <xref target="issues" format="default"/>.</t></li> | |||
are described in <xref target="issues" format="default"/>.</li> | ||||
</ul> | </ul> | |||
</section> <!-- interop --> | ||||
</section> | ||||
<section anchor="i18n" numbered="true" toc="default"> | <section anchor="i18n" numbered="true" toc="default"> | |||
<name>Internationalization Considerations</name> | <name>Internationalization Considerations</name> | |||
<t>TZif time zone designations contain only ASCII alphanumerics, | <t>TZif time zone designations contain only ASCII alphanumerics, "-", | |||
"-", and "+". Commonly used designations include numeric strings | and "+". Commonly used designations include numeric strings like "-10" | |||
like "-10" and "+0530" for UT offsets, and English-language | and "+0530" for UT offsets and English language abbreviations like | |||
abbreviations like "CEST" for Central European Summer Time and | "CEST" for Central European Summer Time and "GMT" for Greenwich Mean | |||
"GMT" for Greenwich Mean Time. It is the TZif reader's | Time. It is the TZif reader's responsibility to substitute different | |||
responsibility to substitute different abbreviations when needed | abbreviations when needed for internationalization, such as substituting | |||
for internationalization, such as substituting "HNC" (l'heure | "HNC" (l'heure normale du Centre) for "CST" (Central Standard Time) in | |||
normale du Centre) for "CST" (Central Standard Time) in | French-speaking regions. This substitution can be problematic, as | |||
French-speaking regions. This substitution can be problematic, | abbreviations can be ambiguous; for example, "CST" commonly stands for | |||
as abbreviations can be ambiguous: for example, "CST" commonly | China Standard Time and Cuba Standard Time as well as Central Standard | |||
stands for China Standard Time and Cuba Standard Time as well as | Time. One approach for addressing this issue can be found in the | |||
Central Standard Time. One approach for addressing this issue | time zone charts of the <xref target="CLDR">Unicode Common Locale Data | |||
can be found in the timezone charts of the | Repository (CLDR) Project</xref>.</t> | |||
<xref target="CLDR"> | ||||
Unicode Common Locale Data Repository (CLDR) Project.</xref></t> | ||||
<t>Although the original TZif design allowed for any nonzero | <t>Although the original TZif design allowed for any nonzero | |||
octets in time zone designations and it was common practice | octets in time zone designations, and it was common practice | |||
until the mid-1990s for designations to contain ASCII spaces, | until the mid-1990s for designations to contain ASCII spaces, | |||
designations are now limited to ASCII alphanumerics, "-", and | designations are now limited to ASCII alphanumerics, "-", and | |||
"+" to avoid confusion and to encourage portability to a wide | "+" to avoid confusion and to encourage portability to a wide | |||
variety of locales.</t> | variety of locales.</t> | |||
</section> <!-- i18n --> | </section> | |||
<section anchor="tzdist" numbered="true" toc="default"> | <section anchor="tzdist" numbered="true" toc="default"> | |||
<name>Use with the Time Zone Data Distribution Service</name> | <name>Use with the Time Zone Data Distribution Service</name> | |||
<t>The <xref target="RFC7808" format="default">Time Zone Data Distribution | <t>The <xref target="RFC7808" format="default">Time Zone Data Distribution | |||
Service (TZDIST)</xref> is a service that allows reliable, | Service (TZDIST)</xref> is a service that allows reliable, | |||
secure, and fast delivery of time zone data and leap-second | secure, and fast delivery of time zone data and leap-second | |||
rules to client systems such as calendaring and scheduling | rules to client systems such as calendaring and scheduling | |||
applications or operating systems.</t> | applications or operating systems.</t> | |||
<t>A TZDIST service MAY supply time zone data to clients in | <t>A TZDIST service <bcp14>MAY</bcp14> supply time zone data to clients in | |||
the Time Zone Information Format. Such a service MUST indicate | the Time Zone Information Format. Such a service <bcp14>MUST</bcp14> indi | |||
cate | ||||
that it supports this format by including the media type | that it supports this format by including the media type | |||
<xref target="tzif" format="default">"application/tzif"</xref> in its | <xref target="tzif" format="default">"application/tzif"</xref> in its | |||
"capabilities" response | "capabilities" response | |||
(<xref target="RFC7808" section="5.1" format="default"/>). | (<xref target="RFC7808" section="5.1" format="default"/>). | |||
A TZDIST service MAY also include the media type | A TZDIST service <bcp14>MAY</bcp14> also include the media type | |||
<xref target="tzif-leap" format="default"> | <xref target="tzif-leap" format="default"> | |||
"application/tzif-leap"</xref> in its | "application/tzif-leap"</xref> in its | |||
"capabilities" response if it is able to generate TZif files | "capabilities" response if it is able to generate TZif files | |||
containing leap-second records. | containing leap-second records. | |||
A TZDIST service MUST NOT advertise the "application/tzif-leap" | A TZDIST service <bcp14>MUST NOT</bcp14> advertise the "application/tzif-l eap" | |||
media type without also advertising "application/tzif".</t> | media type without also advertising "application/tzif".</t> | |||
<t>TZDIST clients MUST use the | <t>TZDIST clients <bcp14>MUST</bcp14> use the HTTP "Accept" | |||
<xref target="RFC9110" section="12.5.1" sectionFormat="comma" | header field (<xref target="RFC9110" | |||
format="default">HTTP "Accept" header field</xref> | section="12.5.1" sectionFormat="comma"/>) to indicate their preference to | |||
to indicate | receive data in the | |||
their preference to receive data in the "application/tzif" | "application/tzif" and/or "application/tzif-leap" formats.</t> | |||
and/or "application/tzif-leap" formats.</t> | ||||
<section anchor="truncation" numbered="true" toc="default"> | <section anchor="truncation" numbered="true" toc="default"> | |||
<name>Truncating TZif Files</name> | <name>Truncating TZif Files</name> | |||
<t>As described in | <t>As described in | |||
<xref target="RFC7808" section="3.9" format="default"/>, | <xref target="RFC7808" section="3.9" format="default"/>, | |||
a TZDIST service MAY truncate time zone transition data. | a TZDIST service <bcp14>MAY</bcp14> truncate time zone transition data. | |||
A truncated TZif file is valid from its first and up to, but | A truncated TZif file is valid from its first and up to, but | |||
not including, its last version 2+ transition time, if present.</t> | not including, its last version 2+ transition time, if present.</t> | |||
<t>When truncating the start of a TZif file, the service MUST | <t>When truncating the start of a TZif file, the service <bcp14>MUST</bc p14> | |||
supply in the version 2+ data a first transition time that is | supply in the version 2+ data a first transition time that is | |||
the start point of the truncation range. | the start point of the truncation range. | |||
As with untruncated TZif files, time type 0 indicates local | As with untruncated TZif files, time type 0 indicates local | |||
time immediately before the start point, and the time type of | time immediately before the start point, and the time type of | |||
the first transition indicates local time thereafter. | the first transition indicates local time thereafter. | |||
Time type 0 MUST be a placeholder indicating that local time | Time type 0 <bcp14>MUST</bcp14> be a placeholder indicating that local t ime | |||
is unspecified, so that the reader is unambiguously informed | is unspecified, so that the reader is unambiguously informed | |||
of truncation at the start.</t> | of truncation at the start.</t> | |||
<t>When truncating the start of a TZif file containing | <t>When truncating the start of a TZif file containing | |||
leap-second records, the service MUST keep all leap-second | leap-second records, the service <bcp14>MUST</bcp14> keep all leap-secon d | |||
records governing timestamps within the truncation range, | records governing timestamps within the truncation range, | |||
even if the first such record precedes the start point of | even if the first such record precedes the start point of | |||
the truncation range. | the truncation range. | |||
If the truncated leap-second table is nonempty, | If the truncated leap-second table is non-empty, | |||
its first record MUST have a positive correction | its first record <bcp14>MUST</bcp14> have a positive correction | |||
if and only if it represents a positive leap second.</t> | if and only if it represents a positive leap second.</t> | |||
<t>When truncating the end of a TZif file, the service MUST | <t>When truncating the end of a TZif file, the service <bcp14>MUST</bcp1 4> | |||
supply in the version 2+ data a last transition time that is | supply in the version 2+ data a last transition time that is | |||
the end point of the truncation range and MUST supply an | the end point of the truncation range and <bcp14>MUST</bcp14> supply an | |||
empty TZ string. | empty TZ string. | |||
As with untruncated TZif files with empty TZ strings, a | As with untruncated TZif files with empty TZ strings, a | |||
truncated TZif file does not indicate local time after the | truncated TZif file does not indicate local time after the | |||
last transition. | last transition. | |||
To this end, the time type of the last transition MUST be a | To this end, the time type of the last transition <bcp14>MUST</bcp14> be a | |||
placeholder indicating that local time is unspecified.</t> | placeholder indicating that local time is unspecified.</t> | |||
<t>All represented information that falls inside the | <t>All represented information that falls inside the | |||
truncation range MUST be the same as that represented by a | truncation range <bcp14>MUST</bcp14> be the same as that represented by a | |||
corresponding untruncated TZif file.</t> | corresponding untruncated TZif file.</t> | |||
<t>TZDIST clients SHOULD NOT use a truncated TZif file (as | <t>TZDIST clients <bcp14>SHOULD NOT</bcp14> use a truncated TZif file (a s | |||
described above) to interpret timestamps outside the | described above) to interpret timestamps outside the | |||
truncation time range.</t> | truncation time range.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Example TZDIST Request for TZif Data</name> | <name>Example TZDIST Request for TZif Data</name> | |||
<t>In this example, the client checks the server for the | <t>In this example, the client checks the server for the | |||
available formats and then requests that the time zone with a | available formats and then requests that the time zone with a | |||
specific time zone identifier be returned in Time Zone | specific time zone identifier be returned in Time Zone | |||
Information Format. | Information Format. | |||
</t> | </t> | |||
<t keepWithNext="true">This example presumes that | <t keepWithNext="true">This example presumes that | |||
the time zone context path has been discovered | the time zone context path has been discovered | |||
(see <xref target="RFC7808" section="4.2.1" | (see <xref target="RFC7808" section="4.2.1" | |||
sectionFormat="comma" format="default"/>) | sectionFormat="comma" format="default"/>) | |||
to be "/tzdist". | to be "/tzdist". | |||
</t> | </t> | |||
<artwork type="ascii-art" name="" align="left" alt=""><![CDATA[ | ||||
<artwork name="" align="left" alt=""><![CDATA[ | ||||
>> Request << | >> Request << | |||
GET /tzdist/capabilities HTTP/1.1 | GET /tzdist/capabilities HTTP/1.1 | |||
Host: tz.example.com | Host: tz.example.com | |||
>> Response << | >> Response << | |||
HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
Date: Fri, 01 Jun 2018 14:52:23 GMT | Date: Fri, 01 Jun 2018 14:52:23 GMT | |||
Content-Type: application/json | Content-Type: application/json | |||
skipping to change at line 1141 ¶ | skipping to change at line 1090 ¶ | |||
Time zone information is normally public and does not call | Time zone information is normally public and does not call | |||
for confidentiality protection. Since time zone | for confidentiality protection. Since time zone | |||
information is used in many critical applications, | information is used in many critical applications, | |||
integrity protection may be required and must be provided | integrity protection may be required and must be provided | |||
externally.</t> | externally.</t> | |||
<t>As discussed in <xref target="RFC7808" section="8"/>, | <t>As discussed in <xref target="RFC7808" section="8"/>, | |||
transmission of time zone data over an insecure communication | transmission of time zone data over an insecure communication | |||
channel could result in tampered data, harming calendaring and | channel could result in tampered data, harming calendaring and | |||
scheduling operations. As such, TZif data transmitted over a | scheduling operations. As such, TZif data transmitted over a | |||
public communications channel MUST be protected with a security | public communications channel <bcp14>MUST</bcp14> be protected with a secu rity | |||
layer such as that provided by <xref target="RFC8446"> | layer such as that provided by <xref target="RFC8446"> | |||
Transport Layer Security (TLS)</xref>.</t> | Transport Layer Security (TLS)</xref>.</t> | |||
</section> | </section> | |||
<section anchor="privacy" numbered="true" toc="default"> | <section anchor="privacy" numbered="true" toc="default"> | |||
<name>Privacy Considerations</name> | <name>Privacy Considerations</name> | |||
<t>The Time Zone Information Format contains publicly available | <t>The Time Zone Information Format contains publicly available | |||
data, and it does not define any extensible areas that | data, and it does not define any extensible areas that | |||
could be used to store private data.</t> | could be used to store private data.</t> | |||
<t>As discussed in <xref target="RFC7808" section="9" format="default"/>, | <t>As discussed in <xref target="RFC7808" section="9" format="default"/>, | |||
transmission of time zone data over an insecure communications | transmission of time zone data over an insecure communications | |||
channel could leak the past, current, or future location of a | channel could leak the past, current, or future location of a | |||
device or user. | device or user. | |||
As such, TZif data transmitted over a public communications | As such, TZif data transmitted over a public communications | |||
channel MUST be protected with a confidentiality layer such as | channel <bcp14>MUST</bcp14> be protected with a confidentiality layer such as | |||
that provided by <xref target="RFC8446" format="default"> | that provided by <xref target="RFC8446" format="default"> | |||
Transport Layer Security (TLS)</xref>.</t> | Transport Layer Security (TLS)</xref>.</t> | |||
</section> | </section> | |||
<section anchor="iana" numbered="true" toc="default"> | <section anchor="iana" numbered="true" toc="default"> | |||
<name>IANA Considerations</name> | <name>IANA Considerations</name> | |||
<t>The IANA is requested to update the | <t>IANA has updated the | |||
<eref target="https://www.iana.org/assignments/media-types/media-types.xht | <eref target="https://www.iana.org/assignments/media-types">"Media Types" | |||
ml">Media Types Registry</eref> as follows:</t> | registry</eref> as follows.</t> | |||
<t>This document defines two | <t>This document defines two | |||
media types <xref target="RFC6838" format="default"/> | media types <xref target="RFC6838" format="default"/> | |||
for the exchange of data utilizing the Time Zone | for the exchange of data utilizing the Time Zone | |||
Information Format.</t> | Information Format.</t> | |||
<section anchor="tzif" numbered="true" toc="default"> | <section anchor="tzif" numbered="true" toc="default"> | |||
<name>application/tzif</name> | <name>application/tzif</name> | |||
<dl newline="true" spacing="normal"> | <dl newline="false" spacing="normal"> | |||
<dt>Type name:</dt> | <dt>Type name:</dt> | |||
<dd>application</dd> | <dd>application</dd> | |||
<dt>Subtype name:</dt> | <dt>Subtype name:</dt> | |||
<dd>tzif</dd> | <dd>tzif</dd> | |||
<dt>Required parameters:</dt> | <dt>Required parameters:</dt> | |||
<dd>N/A</dd> | <dd>N/A</dd> | |||
<dt>Optional parameters:</dt> | <dt>Optional parameters:</dt> | |||
<dd>N/A</dd> | <dd>N/A</dd> | |||
<dt>Encoding considerations:</dt> | <dt>Encoding considerations:</dt> | |||
<dd>binary</dd> | <dd>binary</dd> | |||
<dt>Security considerations:</dt> | <dt>Security considerations:</dt> | |||
<dd> | <dd> See <xref target="security" format="default"/> of RFC 9636.</dd> | |||
See <xref target="security" format="default"/> of This Document. | ||||
</dd> | ||||
<dt>Interoperability considerations:</dt> | <dt>Interoperability considerations:</dt> | |||
<dd> | <dd>See <xref target="interop" format="default"/> of RFC 9636.</dd> | |||
See <xref target="interop" format="default"/> of This Document. | ||||
</dd> | ||||
<dt>Published specification:</dt> | <dt>Published specification:</dt> | |||
<dd> | <dd>RFC 9636.</dd> | |||
This specification. | ||||
</dd> | ||||
<dt>Applications that use this media type:</dt> | <dt>Applications that use this media type:</dt> | |||
<dd> | <dd>This media type is designed for widespread use by applications | |||
This media type is designed for widespread use by | that need to use or exchange time zone information relative to UNIX | |||
applications that need to use or exchange time zone | time, such as the <xref target="ZIC" format="default"> Time Zone | |||
information relative to UNIX Time, | Information Compiler (zic)</xref> and the <xref target="GNU-C" | |||
such as the | format="default"> GNU C Library</xref>. The <xref target="RFC7808" | |||
<xref target="ZIC" format="default"> | format="default">Time Zone Distribution Service</xref> can directly | |||
Time Zone Information Compiler (zic)</xref> | use this media type.</dd> | |||
and the | ||||
<xref target="GNU-C" format="default"> | ||||
GNU C Library</xref>. | ||||
The <xref target="RFC7808" format="default">Time Zone Distribution | ||||
Service</xref> can directly use this media type. | ||||
</dd> | ||||
<dt>Fragment identifier considerations:</dt> | <dt>Fragment identifier considerations:</dt> | |||
<dd>N/A</dd> | <dd>N/A</dd> | |||
<dt>Additional information:</dt> | <dt>Additional information:</dt><dd> | |||
<dd> | <t><br/></t> | |||
<dl newline="false" spacing="normal"> | <dl newline="false" spacing="compact"> | |||
<dt>Magic number(s):</dt> | <dt>Magic number(s):</dt> | |||
<dd> | <dd> | |||
The first 4 octets are 0x54, 0x5A, 0x69, 0x66</dd> | The first 4 octets are 0x54, 0x5A, 0x69, 0x66</dd> | |||
<dt>File extensions(s):</dt> | <dt>File extensions(s):</dt> | |||
<dd>N/A</dd> | <dd>N/A</dd> | |||
<dt>Macintosh file type code(s):</dt> | <dt>Macintosh file type code(s):</dt> | |||
<dd>N/A</dd> | <dd>N/A</dd> | |||
</dl> | </dl> | |||
</dd> | </dd> | |||
<dt>Person & email address to contact for further information:</dt > | <dt>Person & email address to contact for further information:</dt > | |||
<dd> | <dd> | |||
Time Zone Database mailing list <tz@iana.org> | Time Zone Database mailing list <tz@iana.org> | |||
</dd> | </dd> | |||
<dt>Intended usage:</dt> | <dt>Intended usage:</dt> | |||
<dd>COMMON</dd> | <dd>COMMON</dd> | |||
<dt>Restrictions on usage:</dt> | <dt>Restrictions on usage:</dt> | |||
<dd>N/A</dd> | <dd>N/A</dd> | |||
<dt>Author:</dt> | <dt>Author:</dt> | |||
<dd> | <dd> | |||
See the "Authors' Addresses" section of This Document. | See the "Authors' Addresses" section of RFC 9636. | |||
</dd> | </dd> | |||
<dt>Change controller:</dt> | <dt>Change controller:</dt> | |||
<dd>IETF</dd> | <dd>IETF</dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
<section anchor="tzif-leap" numbered="true" toc="default"> | <section anchor="tzif-leap" numbered="true" toc="default"> | |||
<name>application/tzif-leap</name> | <name>application/tzif-leap</name> | |||
<dl newline="true" spacing="normal"> | <dl newline="false" spacing="normal"> | |||
<dt>Type name:</dt> | <dt>Type name:</dt> | |||
<dd>application</dd> | <dd>application</dd> | |||
<dt>Subtype name:</dt> | <dt>Subtype name:</dt> | |||
<dd>tzif-leap</dd> | <dd>tzif-leap</dd> | |||
<dt>Required parameters:</dt> | <dt>Required parameters:</dt> | |||
<dd>none</dd> | <dd>none</dd> | |||
<dt>Optional parameters:</dt> | <dt>Optional parameters:</dt> | |||
<dd>none</dd> | <dd>none</dd> | |||
<dt>Encoding considerations:</dt> | <dt>Encoding considerations:</dt> | |||
<dd>binary</dd> | <dd>binary</dd> | |||
<dt>Security considerations:</dt> | <dt>Security considerations:</dt> | |||
<dd> | <dd> | |||
See <xref target="security" format="default"/> of This Document. | See <xref target="security" format="default"/> of RFC 9636. | |||
</dd> | </dd> | |||
<dt>Interoperability considerations:</dt> | <dt>Interoperability considerations:</dt> | |||
<dd> | <dd> | |||
See <xref target="interop" format="default"/> of This Document. | See <xref target="interop" format="default"/> of RFC 9636. | |||
</dd> | </dd> | |||
<dt>Published specification:</dt> | <dt>Published specification:</dt> | |||
<dd> | <dd> | |||
This specification. | RFC 9636. | |||
</dd> | </dd> | |||
<dt>Applications that use this media type:</dt> | <dt>Applications that use this media type:</dt> | |||
<dd> | <dd> | |||
This media type is designed for widespread use by | This media type is designed for widespread use by | |||
applications that need to use or exchange time zone | applications that need to use or exchange time zone | |||
information relative to UNIX Leap Time, | information relative to UNIX leap time, | |||
such as the | such as the | |||
<xref target="ZIC" format="default"> | <xref target="ZIC" format="default"> | |||
Time Zone Information Compiler (zic) | Time Zone Information Compiler (zic) | |||
</xref> | </xref> | |||
and the | and the | |||
<xref target="GNU-C" format="default"> | <xref target="GNU-C" format="default"> | |||
GNU C Library</xref>. | GNU C Library</xref>. | |||
The <xref target="RFC7808" format="default">Time Zone Distribution | The <xref target="RFC7808" format="default">Time Zone Distribution | |||
Service</xref> can directly use this media type. | Service</xref> can directly use this media type. | |||
</dd> | </dd> | |||
<dt>Fragment identifier considerations:</dt> | <dt>Fragment identifier considerations:</dt> | |||
<dd>N/A</dd> | <dd>N/A</dd> | |||
<dt>Additional information:</dt> | <dt>Additional information:</dt><dd> | |||
<dd> | <t><br/></t> | |||
<dl newline="false" spacing="normal"> | <dl newline="false" spacing="compact"> | |||
<dt>Magic number(s):</dt> | <dt>Magic number(s):</dt> | |||
<dd> | <dd> | |||
The first 4 octets are 0x54, 0x5A, 0x69, 0x66</dd> | The first 4 octets are 0x54, 0x5A, 0x69, 0x66</dd> | |||
<dt>File extensions(s):</dt> | <dt>File extensions(s):</dt> | |||
<dd>N/A</dd> | <dd>N/A</dd> | |||
<dt>Macintosh file type code(s):</dt> | <dt>Macintosh file type code(s):</dt> | |||
<dd>N/A</dd> | <dd>N/A</dd> | |||
</dl> | </dl> | |||
</dd> | </dd> | |||
<dt>Person & email address to contact for further information:</dt > | <dt>Person & email address to contact for further information:</dt > | |||
<dd> | <dd> | |||
Time Zone Database mailing list <tz@iana.org> | Time Zone Database mailing list <tz@iana.org> | |||
</dd> | </dd> | |||
<dt>Intended usage:</dt> | <dt>Intended usage:</dt> | |||
<dd>COMMON</dd> | <dd>COMMON</dd> | |||
<dt>Restrictions on usage:</dt> | <dt>Restrictions on usage:</dt> | |||
<dd>N/A</dd> | <dd>N/A</dd> | |||
<dt>Author:</dt> | <dt>Author:</dt> | |||
<dd> | <dd> | |||
See the "Authors' Addresses" section of This Document. | See the "Authors' Addresses" section of RFC 9636. | |||
</dd> | </dd> | |||
<dt>Change controller:</dt> | <dt>Change controller:</dt> | |||
<dd>IETF</dd> | <dd>IETF</dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
</section> | </section> | |||
</middle> | </middle> | |||
<back> | <back> | |||
<references> | <references> | |||
<name>References</name> | <name>References</name> | |||
<references> | <references> | |||
<name>Normative References</name> | <name>Normative References</name> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | |||
FC.2119.xml"/> | 119.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | |||
FC.6838.xml"/> | 838.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
FC.7808.xml"/> | 808.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
FC.8174.xml"/> | 174.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | |||
FC.9110.xml"/> | 110.xml"/> | |||
<!-- <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/referen | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | |||
ce.RFC.0020.xml"/>--> | 0.xml"/> | |||
<reference anchor="POSIX" target="https://pubs.opengroup.org/onlinepubs/ | ||||
<reference anchor="RFC20" target="https://www.rfc-editor.org/info/rfc20" | 9699919799/"> | |||
> | ||||
<front> | ||||
<title>ASCII format for network interchange</title> | ||||
<author initials="V.G." surname="Cerf" fullname="V.G. Cerf"> | ||||
<organization/> | ||||
</author> | ||||
<date year="1969" month="October"/> | ||||
</front> | ||||
<seriesInfo name="STD" value="80"/> | ||||
<seriesInfo name="RFC" value="20"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC0020"/> | ||||
</reference> | ||||
<reference anchor="POSIX" | ||||
target="https://pubs.opengroup.org/onlinepubs/9699919799/"> | ||||
<front> | <front> | |||
<title>Standard for Information Technology--Portable Operating | <title>IEEE Standard for Information Technology--Portable Operating | |||
System Interface (POSIX(R)) Base Specifications, Issue 7</title> | System Interface (POSIX(TM)) Base Specifications, Issue 7</title> | |||
<author> | <author> | |||
<organization>IEEE</organization> | <organization>IEEE</organization> | |||
</author> | </author> | |||
<date day="31" month="January" year="2018"/> | <date month="January" year="2018"/> | |||
</front> | </front> | |||
<seriesInfo name="IEEE" value="1003.1-2017"/> | <refcontent>POSIX.1-2017</refcontent> | |||
<seriesInfo name="IEEE Std" value="1003.1-2017"/> | ||||
<seriesInfo name="DOI" value="10.1109/IEEESTD.2018.8277153"/> | <seriesInfo name="DOI" value="10.1109/IEEESTD.2018.8277153"/> | |||
</reference> | </reference> | |||
<reference anchor="ZIC" | <reference anchor="ZIC" target="http://man7.org/linux/man-pages/man8/zic | |||
target="http://man7.org/linux/man-pages/man8/zic.8.html"> | .8.html"> | |||
<front> | <front> | |||
<title>ZIC(8)</title> | <title>zic(8) - Linux manual page</title> | |||
<author initials="M" surname="Kerrisk" fullname="Michael Kerrisk"> | <author initials="M" surname="Kerrisk" fullname="Michael Kerrisk"> | |||
<organization/> | ||||
</author> | </author> | |||
</front> | </front> | |||
</reference> | </reference> | |||
<reference anchor="GNU-C" target="https://www.gnu.org/software/libc/"> | <reference anchor="GNU-C" target="https://www.gnu.org/software/libc/"> | |||
<front> | <front> | |||
<title>The GNU C Library (glibc)</title> | <title>The GNU C Library</title> | |||
<author initials="" surname="" fullname=""> | <author> | |||
<organization/> | <organization>Free Software Foundation</organization> | |||
</author> | </author> | |||
</front> | </front> | |||
</reference> | </reference> | |||
<reference anchor="ITU-R-TF.460" | <reference anchor="ITU-R-TF.460" target="https://www.itu.int/rec/R-REC-T | |||
target="https://www.itu.int/rec/R-REC-TF.460/en"> | F.460/en"> | |||
<front> | <front> | |||
<title>Standard-frequency and time-signal emissions</title> | <title>Standard-frequency and time-signal emissions</title> | |||
<author> | <author> | |||
<organization>International Telecommunications Union</organization > | <organization>International Telecommunication Union</organization> | |||
</author> | </author> | |||
<date month="February" year="2002" /> | <date month="February" year="2002" /> | |||
</front> | </front> | |||
<seriesInfo name="ITU-R" value="Recommendation TF.460" /> | <seriesInfo name="ITU-R Recommendation" value="TF.460"/> | |||
</reference> | </reference> | |||
</references> | </references> | |||
<references> | <references> | |||
<name>Informative References</name> | <name>Informative References</name> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | |||
FC.5545.xml"/> | 545.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | |||
FC.6557.xml"/> | 557.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
FC.8446.xml"/> | 446.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
FC.8536.xml"/> | 536.xml"/> | |||
<reference anchor="tz-link" | <reference anchor="tz-link" target="https://www.iana.org/time-zones/repo | |||
target="https://www.iana.org/time-zones/repository/tz-link.ht | sitory/tz-link.html"> | |||
ml"> | ||||
<front> | <front> | |||
<title> | <title>Time zone and daylight saving time data</title> | |||
Time zone and daylight saving time data | ||||
</title> | ||||
<author initials="P." surname="Eggert" fullname="Paul Eggert"/> | <author initials="P." surname="Eggert" fullname="Paul Eggert"/> | |||
<author initials="A.D." surname="Olson" fullname="Arthur David Olson "/> | <author initials="A." surname="Olson" fullname="Arthur David Olson"/ > | |||
</front> | </front> | |||
</reference> | </reference> | |||
<reference anchor="EGGERT-TZ" | <reference anchor="EGGERT-TZ" target="https://github.com/eggert/tz/commi | |||
target="https://github.com/eggert/tz/commits/main/tzfile.5"> | ts/main/tzfile.5"> | |||
<front> | <front> | |||
<title>History for tz</title> | <title>History for tz</title> | |||
<author initials="" surname="" fullname=""> | <author> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<date month="June" year="2024"/> | ||||
</front> | </front> | |||
<refcontent>commit b5318b5</refcontent> | ||||
</reference> | </reference> | |||
<reference anchor="CGPM-2022-R4" | <reference anchor="CGPM-2022-R4" target="https://www.bipm.org/en/cgpm-20 | |||
target="https://www.bipm.org/en/cgpm-2022/resolution-4"> | 22/resolution-4"> | |||
<front> | <front> | |||
<title>Resolution 4 of the 27th CGPM (2022)</title> | <title>Resolution 4 of the 27th CGPM (2022)</title> | |||
<author initials='' surname='' fullname=''> | <author> | |||
<organization>General Conference on Weights and Measures</organiza tion> | <organization>General Conference on Weights and Measures</organiza tion> | |||
</author> | </author> | |||
<date month='November' year='2022'/> | <date month='November' year='2022'/> | |||
</front> | </front> | |||
<seriesInfo name="DOI" value="10.59161/CGPM2022RES4E"/> | ||||
</reference> | </reference> | |||
<reference anchor="CLDR" | <reference anchor="CLDR" target="https://cldr.unicode.org/"> | |||
target="https://cldr.unicode.org/"> | ||||
<front> | <front> | |||
<title>Unicode CLDR Project</title> | <title>Unicode CLDR Project</title> | |||
<author initials='' surname='' fullname=''> | <author> | |||
<organization>Unicode, Inc.</organization> | <organization>Unicode, Inc.</organization> | |||
</author> | </author> | |||
<date month='' year='2024'/> | ||||
</front> | </front> | |||
</reference> | </reference> | |||
<reference anchor="Err6426" | <reference anchor="Err6426" target="https://www.rfc-editor.org/errata/ei | |||
target="https://www.rfc-editor.org/errata/eid6426"> | d6426"> | |||
<front> | <front> | |||
<title>Erratum ID 6426</title> | <title>Erratum ID 6426</title> | |||
<author initials='' surname='' fullname=''> | <author initials='' surname='' fullname=''> | |||
<organization>RFC Errata</organization> | <organization>RFC Errata</organization> | |||
</author> | </author> | |||
<date month='' year=''/> | ||||
</front> | </front> | |||
<seriesInfo name="RFC" value="8536"/> | <refcontent>RFC 8536</refcontent> | |||
</reference> | </reference> | |||
<reference anchor="Err6435" | <reference anchor="Err6435" target="https://www.rfc-editor.org/errata/ei | |||
target="https://www.rfc-editor.org/errata/eid6435"> | d6435"> | |||
<front> | <front> | |||
<title>Erratum ID 6435</title> | <title>Erratum ID 6435</title> | |||
<author initials='' surname='' fullname=''> | <author initials='' surname='' fullname=''> | |||
<organization>RFC Errata</organization> | <organization>RFC Errata</organization> | |||
</author> | </author> | |||
<date month='' year=''/> | ||||
</front> | </front> | |||
<seriesInfo name="RFC" value="8536"/> | <refcontent>RFC 8536</refcontent> | |||
</reference> | </reference> | |||
<reference anchor="Err6757" | <reference anchor="Err6757" target="https://www.rfc-editor.org/errata/ei | |||
target="https://www.rfc-editor.org/errata/eid6757"> | d6757"> | |||
<front> | <front> | |||
<title>Erratum ID 6757</title> | <title>Erratum ID 6757</title> | |||
<author initials='' surname='' fullname=''> | <author initials='' surname='' fullname=''> | |||
<organization>RFC Errata</organization> | <organization>RFC Errata</organization> | |||
</author> | </author> | |||
<date month='' year=''/> | ||||
</front> | </front> | |||
<seriesInfo name="RFC" value="8536"/> | <refcontent>RFC 8536</refcontent> | |||
</reference> | </reference> | |||
<reference anchor="Err7681" target="https://www.rfc-editor.org/errata/ei | ||||
d7681"> | ||||
<front> | ||||
<title>Erratum ID 7681</title> | ||||
<author initials='' surname='' fullname=''> | ||||
<organization>RFC Errata</organization> | ||||
</author> | ||||
</front> | ||||
<refcontent>RFC 8536</refcontent> | ||||
</reference> | ||||
</references> | </references> | |||
</references> | </references> | |||
<section anchor="issues" numbered="true" toc="default"> | <section anchor="issues" numbered="true" toc="default"> | |||
<name>Common Interoperability Issues</name> | <name>Common Interoperability Issues</name> | |||
<t>This section documents common problems in implementing this | <t>This section documents common problems in implementing this | |||
specification. | specification. | |||
Most of these are problems in generating TZif files for use by | Most of these are problems in generating TZif files for use by | |||
readers conforming to | readers conforming to | |||
<xref target="EGGERT-TZ" format="default"> | <xref target="EGGERT-TZ" format="default"> | |||
predecessors of this specification</xref>. | predecessors of this specification</xref>. | |||
The goals of this section are:</t> | The goals of this section are to help:</t> | |||
<ol spacing="normal" type="1"> | <ol spacing="normal" type="1"> | |||
<li>to help TZif writers output | <li>TZif writers output files that avoid common pitfalls in older or | |||
files that avoid common | buggy TZif readers,</li> | |||
pitfalls in older or buggy TZif readers,</li> | ||||
<li>to help TZif readers avoid common pitfalls when reading | <li>TZif readers avoid common pitfalls when reading files generated by | |||
files generated by future TZif writers, and</li> | future TZif writers, and</li> | |||
<li>to help any future specification authors see what sort of | <li>any future specification authors see what sort of problems arise | |||
problems arise when the TZif format is changed.</li> | when the TZif format is changed.</li> | |||
</ol> | </ol> | |||
<t>When new versions of the TZif format have been defined, a | <t>When new versions of the TZif format have been defined, a | |||
design goal has been that a reader can successfully use a TZif | design goal has been that a reader can successfully use a TZif | |||
file even if the file is of a later TZif version than what the | file even if the file is of a later TZif version than what the | |||
reader was designed for. | reader was designed for. | |||
When complete compatibility was not achieved, an attempt was | When complete compatibility was not achieved, an attempt was | |||
made to limit glitches to rarely used timestamps and allow | made to limit glitches to rarely used timestamps and allow | |||
simple partial workarounds in writers designed to generate | simple partial workarounds in writers designed to generate | |||
new-version data useful even for older-version readers. | newer-version data useful even for older-version readers. | |||
This section attempts to document these compatibility issues and | This section attempts to document these compatibility issues and | |||
workarounds, as well as documenting other common bugs in | workarounds as well as other common bugs in readers.</t> | |||
readers.</t> | ||||
<t>Interoperability problems with TZif include the following:</t> | <t>Interoperability problems with TZif include the following:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>Some readers examine only version 1 data. | <li>Some readers examine only version 1 data. | |||
As a partial workaround, a writer can output as much version 1 | As a partial workaround, a writer can output as much version 1 | |||
data as possible. | data as possible. | |||
However, a reader should ignore version 1 data and use | However, a reader should ignore version 1 data and use | |||
version 2+ data, even if the reader's timestamps have only | version 2+ data, even if the reader's timestamps have only | |||
32 bits.</li> | 32 bits.</li> | |||
<li>Some readers designed for version 2 might mishandle | <li>Some readers designed for version 2 might mishandle | |||
timestamps after a version 3 or higher file's last transition, because | timestamps after a version 3 or higher file's last transition, because | |||
they cannot parse extensions to POSIX in the TZ-like string. | they cannot parse extensions to POSIX in the TZ-like string. | |||
As a partial workaround, a writer can output more transitions | As a partial workaround, a writer can output more transitions | |||
than necessary, so that only far-future timestamps are | than necessary, so that only far-future timestamps are | |||
mishandled by version 2 readers.</li> | mishandled by version 2 readers.</li> | |||
<li>Some readers designed for version 2 do not support | <li>Some readers designed for version 2 do not support permanent | |||
permanent daylight saving time with transitions after 24:00 | daylight saving time with transitions after 24:00 -- e.g., a TZ string | |||
-- e.g., a TZ string | "EST5EDT,0/0,J365/25" denoting permanent Eastern Daylight Time (-04). | |||
"EST5EDT,0/0,J365/25" denoting permanent Eastern Daylight Time | As a workaround, a writer can substitute standard time for two time | |||
(-04). | zones east, e.g., "XXX3EDT4,0/0,J365/23" for a time zone with a | |||
As a workaround, a writer can substitute standard time | never-used standard time (XXX, -03) and negative daylight saving time | |||
for two time zones east, e.g., | (EDT, -04) all year. Alternatively, as a partial workaround, a writer | |||
"XXX3EDT4,0/0,J365/23" | can substitute standard time for the next time zone east -- e.g., | |||
for a time zone with a never-used standard time (XXX, -03) | "AST4" for permanent Atlantic Standard Time (-04).</li> | |||
and negative daylight saving time (EDT, -04) all year. | ||||
Alternatively, | ||||
as a partial workaround a writer can substitute standard time | ||||
for the next time zone east -- e.g., "AST4" for permanent | ||||
Atlantic Standard Time (-04).</li> | ||||
<li>Some readers designed for version 2 or 3, and that require strict | <li>Some readers designed for version 2 or 3 and that require strict | |||
conformance to RFC 8536, reject version 4 files whose leap-second | conformance to <xref target="RFC8536"/> reject version 4 files whose | |||
tables are truncated at the start or that end in expiration times.</li> | leap-second tables are truncated at the start or end in expiration | |||
times.</li> | ||||
<li>Some readers ignore the footer and instead predict future | <li>Some readers ignore the footer and instead predict future | |||
timestamps from the time type of the last transition. | timestamps from the time type of the last transition. As a partial | |||
As a partial workaround, a writer can output more transitions | workaround, a writer can output more transitions than necessary.</li> | |||
than necessary.</li> | ||||
<li>Some readers do not use time type 0 for timestamps before | <li>Some readers do not use time type 0 for timestamps before the | |||
the first transition, in that they infer a time type using a | first transition, in that they infer a time type using a heuristic | |||
heuristic that does not always select time type 0. | that does not always select time type 0. As a partial workaround, a | |||
As a partial workaround, a writer can output a placeholder (no-op) | writer can output a placeholder (no-op) first transition at an early | |||
first transition at an early time.</li> | time.</li> | |||
<li>Some readers mishandle timestamps before the first | <li>Some readers mishandle timestamps before the first transition that | |||
transition that has a timestamp not less than -2**31. | has a timestamp that is not less than -2<sup>31</sup>. Readers that sup | |||
Readers that support only 32-bit timestamps are likely to be | port | |||
more prone to this problem, for example, when they process | only 32-bit timestamps are likely to be more prone to this problem, | |||
64-bit transitions, only some of which are representable in 32 | for example, when they process 64-bit transitions, only some of which | |||
bits. | are representable in 32 bits. As a partial workaround, a writer can | |||
As a partial workaround, a writer can output a placeholder | output a placeholder transition at timestamp -2<sup>31</sup>.</li> | |||
transition at timestamp -2**31.</li> | ||||
<li>Some readers mishandle a transition if its timestamp has | <li>Some readers mishandle a transition if its timestamp has the | |||
the minimum possible signed 64-bit value. | minimum possible signed 64-bit value. Timestamps less than -2<sup>59</s | |||
Timestamps less than -2**59 are not recommended.</li> | up> are | |||
not recommended.</li> | ||||
<li>Some readers mishandle POSIX-style TZ strings that | <li>Some readers mishandle POSIX-style TZ strings that contain "<" | |||
contain "<" or ">". | or ">". As a partial workaround, a writer can avoid using "<" | |||
As a partial workaround, a writer can avoid using '<' or '>' | or ">" for time zone abbreviations containing only alphabetic | |||
for time zone abbreviations containing only alphabetic | ||||
characters.</li> | characters.</li> | |||
<li>Many readers mishandle time zone abbreviations that contain | <li>Many readers mishandle time zone abbreviations that contain | |||
non-ASCII characters. | non-ASCII characters. These characters are not recommended.</li> | |||
These characters are not recommended.</li> | ||||
<li>Some readers may mishandle time zone abbreviations that | <li>Some readers may mishandle time zone abbreviations that contain | |||
contain fewer than 3 or more than 6 characters, or that | fewer than 3 or more than 6 characters or that contain ASCII | |||
contain ASCII characters other than alphanumerics, '-', and | characters other than alphanumerics, "-", and "+". These | |||
'+'. | abbreviations are not recommended.</li> | |||
These abbreviations are not recommended.</li> | ||||
<li>This specification does not dictate how readers should deal | <li>This specification does not dictate how readers should deal with | |||
with timestamps when local time is unspecified. | timestamps when local time is unspecified. Common practice is for | |||
Common practice is for readers to report UT with designation | readers to report UT with designation string "-00". A reader could | |||
string "-00". | return an error indication instead.</li> | |||
A reader could return an error indication instead.</li> | ||||
<li>Some readers mishandle TZif files that specify | <li>Some readers mishandle TZif files that specify daylight saving | |||
daylight saving time UT offsets that are less than the UT | time UT offsets that are less than the UT offsets for the | |||
offsets for the corresponding standard time. | corresponding standard time. These readers do not support locations | |||
These readers do not support locations like Ireland, which | like Ireland, which uses the equivalent of the POSIX TZ string | |||
uses the equivalent of the POSIX TZ string | "IST-1GMT0,M10.5.0,M3.5.0/1", observing standard time (IST, +01) in | |||
"IST-1GMT0,M10.5.0,M3.5.0/1", observing standard time | summer and daylight saving time (GMT, +00) in winter. As a partial | |||
(IST, +01) in summer and daylight saving time (GMT, +00) in | workaround, a writer can output data for the equivalent of the POSIX | |||
winter. | TZ string "GMT0IST,M3.5.0/1,M10.5.0", thus swapping standard and | |||
As a partial workaround, a writer can output data for the | daylight saving time. Although this workaround misidentifies which | |||
equivalent of the POSIX TZ string "GMT0IST,M3.5.0/1,M10.5.0", | part of the year uses daylight saving time, it records UT offsets and | |||
thus swapping standard and daylight saving time. | time zone abbreviations correctly.</li> | |||
Although this workaround misidentifies which part of the year | ||||
uses daylight saving time, it records UT offsets and time zone | ||||
abbreviations correctly.</li> | ||||
<li>Some readers generate ambiguous timestamps for positive | <li>Some readers generate ambiguous timestamps for positive leap | |||
leap seconds that occur when the UTC offset is not a multiple | seconds that occur when the UTC offset is not a multiple of 60 | |||
of 60 seconds. | seconds. For example, with UTC offset +01:23:45 and | |||
For example, in a timezone with UTC offset +01:23:45 and with | a positive leap second 78796801 (1972-06-30 23:59:60 UTC), some | |||
a positive leap second 78796801 (1972-06-30 23:59:60 UTC), | readers will map both 78796800 and 78796801 to 01:23:45 local time the | |||
some readers will map both 78796800 and 78796801 to 01:23:45 | next day instead of mapping the latter to 01:23:46, and they will map | |||
local time the next day instead of mapping the latter to | 78796815 to 01:23:59 instead of to 01:23:60. This has not yet been a | |||
01:23:46, and they will map 78796815 to 01:23:59 instead of to | practical problem, since no civil authority has observed such UTC | |||
01:23:60. | offsets since leap seconds were introduced in 1972.</li> | |||
This has not yet been a practical problem, since no civil | ||||
authority has observed such UTC offsets since leap seconds | ||||
were introduced in 1972.</li> | ||||
</ul> | </ul> | |||
<t>Some interoperability problems are reader bugs that | <t>Some interoperability problems are reader bugs that | |||
are listed here mostly as warnings to developers of readers.</t> | are listed here mostly as warnings to developers of readers.</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>Some readers do not support negative timestamps. | <li>Some readers do not support negative timestamps. Developers of | |||
Developers of distributed applications should keep this | distributed applications should keep this in mind if they need to deal | |||
in mind if they need to deal with pre-1970 data.</li> | with pre-1970 data.</li> | |||
<li>Some readers mishandle timestamps before the first | <li>Some readers mishandle timestamps before the first transition that | |||
transition that has a nonnegative timestamp. | has a non-negative timestamp. Readers that do not support negative | |||
Readers that do not support negative timestamps are likely to | timestamps are likely to be more prone to this problem.</li> | |||
be more prone to this problem.</li> | ||||
<li>Some readers mishandle time zone abbreviations like "-08" | <li>Some readers mishandle time zone abbreviations like "-08" that | |||
that contain '+', '-', or digits.</li> | contain "+", "-", or digits.</li> | |||
<li>Some readers mishandle UT offsets that are out of the | <li>Some readers mishandle UT offsets that are out of the conventional | |||
conventional range of -12 through +12 hours and so do not | range of -12 through +12 hours and so do not support locations like | |||
support locations like Kiritimati that are outside this | Kiritimati that are outside this range.</li> | |||
range.</li> | ||||
<li>Some readers mishandle UT offsets in the range [-3599, -1] | <li>Some readers mishandle UT offsets in the range [-3599, -1] seconds | |||
seconds from UT, because they integer-divide the offset by | from UT because they integer-divide the offset by 3600 to get 0 and | |||
3600 to get 0 and then display the hour part as "+00".</li> | then display the hour part as "+00".</li> | |||
<li>Some readers mishandle UT offsets that are not a multiple | ||||
of one hour, 15 minutes, or 1 minute.</li> | <li>Some readers mishandle UT offsets that are not a multiple of one | |||
hour, 15 minutes, or 1 minute.</li> | ||||
</ul> | </ul> | |||
</section> | </section> | |||
<section anchor="examples" numbered="true" toc="default"> | <section anchor="examples" numbered="true" toc="default"> | |||
<name>Example TZif Files</name> | <name>Example TZif Files</name> | |||
<t>The following sections contain annotated hexadecimal dumps of | <t>The following sections contain annotated hexadecimal dumps of example | |||
example TZif files.</t> | TZif files.</t> | |||
<t>These examples should only be considered informative. | <t>These examples should only be considered informative. Although the | |||
Although the example data entries are current as of the | example data entries are current as of the publication date of this | |||
publication date of this document, the data will likely change | document, the data will likely change in the future as leap seconds are | |||
in the future as leap seconds are added and changes are made to | added and changes are made to civil time.</t> | |||
civil time.</t> | ||||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Version 1 File Representing UTC (with Leap Seconds)</name> | <name>Version 1 File Representing UTC (with Leap Seconds)</name> | |||
<table align="center"> | <table align="center"> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">File Offset</th> | <th align="left">File Offset</th> | |||
<th align="left">Hexadecimal Octets</th> | <th align="left">Hexadecimal Octets</th> | |||
<th align="left">Record Name / Field Name</th> | <th align="left">Record Name / Field Name</th> | |||
skipping to change at line 1693 ¶ | skipping to change at line 1593 ¶ | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">004</td> | <td align="left">004</td> | |||
<td align="left">00</td> | <td align="left">00</td> | |||
<td align="left">version</td> | <td align="left">version</td> | |||
<td align="left">0 (1)</td> | <td align="left">0 (1)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">005</td> | <td align="left">005</td> | |||
<td align="left">00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</td> | <td align="left">00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</td> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">020</td> | <td align="left">020</td> | |||
<td align="left">00 00 00 01</td> | <td align="left">00 00 00 01</td> | |||
<td align="left">isutcnt</td> | <td align="left">isutcnt</td> | |||
<td align="left">1</td> | <td align="left">1</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">024</td> | <td align="left">024</td> | |||
<td align="left">00 00 00 01</td> | <td align="left">00 00 00 01</td> | |||
skipping to change at line 1736 ¶ | skipping to change at line 1635 ¶ | |||
<tr> | <tr> | |||
<td align="left">040</td> | <td align="left">040</td> | |||
<td align="left">00 00 00 04</td> | <td align="left">00 00 00 04</td> | |||
<td align="left">charcnt</td> | <td align="left">charcnt</td> | |||
<td align="left">4</td> | <td align="left">4</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[0]</td> | <td align="left">localtimetype[0]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">044</td> | <td align="left">044</td> | |||
<td align="left">00 00 00 00</td> | <td align="left">00 00 00 00</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">0 (+00:00)</td> | <td align="left">0 (+00:00)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 1772 ¶ | skipping to change at line 1670 ¶ | |||
<tr> | <tr> | |||
<td align="left">050</td> | <td align="left">050</td> | |||
<td align="left">55 54 43 00</td> | <td align="left">55 54 43 00</td> | |||
<td align="left">designations[0]</td> | <td align="left">designations[0]</td> | |||
<td align="left">"UTC\0"</td> | <td align="left">"UTC\0"</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[0]</td> | <td align="left">leapsecond[0]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">054</td> | <td align="left">054</td> | |||
<td align="left">04 b2 58 00</td> | <td align="left">04 b2 58 00</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">78796800 (1972-06-30T23:59:60Z)</td> | <td align="left">78796800 (1972-06-30T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">058</td> | <td align="left">058</td> | |||
<td align="left">00 00 00 01</td> | <td align="left">00 00 00 01</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">1</td> | <td align="left">1</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[1]</td> | <td align="left">leapsecond[1]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">062</td> | <td align="left">062</td> | |||
<td align="left">05 a4 ec 01</td> | <td align="left">05 a4 ec 01</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">94694401 (1972-12-31T23:59:60Z)</td> | <td align="left">94694401 (1972-12-31T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">066</td> | <td align="left">066</td> | |||
<td align="left">00 00 00 02</td> | <td align="left">00 00 00 02</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">2</td> | <td align="left">2</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[2]</td> | <td align="left">leapsecond[2]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">070</td> | <td align="left">070</td> | |||
<td align="left">07 86 1f 82</td> | <td align="left">07 86 1f 82</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">126230402 (1973-12-31T23:59:60Z)</td> | <td align="left">126230402 (1973-12-31T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">074</td> | <td align="left">074</td> | |||
<td align="left">00 00 00 03</td> | <td align="left">00 00 00 03</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">3</td> | <td align="left">3</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[3]</td> | <td align="left">leapsecond[3]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">078</td> | <td align="left">078</td> | |||
<td align="left">09 67 53 03</td> | <td align="left">09 67 53 03</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">157766403 (1974-12-31T23:59:60Z)</td> | <td align="left">157766403 (1974-12-31T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">082</td> | <td align="left">082</td> | |||
<td align="left">00 00 00 04</td> | <td align="left">00 00 00 04</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">4</td> | <td align="left">4</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[4]</td> | <td align="left">leapsecond[4]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">086</td> | <td align="left">086</td> | |||
<td align="left">0b 48 86 84</td> | <td align="left">0b 48 86 84</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">189302404 (1975-12-31T23:59:60Z)</td> | <td align="left">189302404 (1975-12-31T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">090</td> | <td align="left">090</td> | |||
<td align="left">00 00 00 05</td> | <td align="left">00 00 00 05</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">5</td> | <td align="left">5</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[5]</td> | <td align="left">leapsecond[5]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">094</td> | <td align="left">094</td> | |||
<td align="left">0d 2b 0b 85</td> | <td align="left">0d 2b 0b 85</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">220924805 (1976-12-31T23:59:60Z)</td> | <td align="left">220924805 (1976-12-31T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">098</td> | <td align="left">098</td> | |||
<td align="left">00 00 00 06</td> | <td align="left">00 00 00 06</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">6</td> | <td align="left">6</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[6]</td> | <td align="left">leapsecond[6]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">102</td> | <td align="left">102</td> | |||
<td align="left">0f 0c 3f 06</td> | <td align="left">0f 0c 3f 06</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">252460806 (1977-12-31T23:59:60Z)</td> | <td align="left">252460806 (1977-12-31T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">106</td> | <td align="left">106</td> | |||
<td align="left">00 00 00 07</td> | <td align="left">00 00 00 07</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">7</td> | <td align="left">7</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[7]</td> | <td align="left">leapsecond[7]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">110</td> | <td align="left">110</td> | |||
<td align="left">10 ed 72 87</td> | <td align="left">10 ed 72 87</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">283996807 (1978-12-31T23:59:60Z)</td> | <td align="left">283996807 (1978-12-31T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">114</td> | <td align="left">114</td> | |||
<td align="left">00 00 00 08</td> | <td align="left">00 00 00 08</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">8</td> | <td align="left">8</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[8]</td> | <td align="left">leapsecond[8]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">118</td> | <td align="left">118</td> | |||
<td align="left">12 ce a6 08</td> | <td align="left">12 ce a6 08</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">315532808 (1979-12-31T23:59:60Z)</td> | <td align="left">315532808 (1979-12-31T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">122</td> | <td align="left">122</td> | |||
<td align="left">00 00 00 09</td> | <td align="left">00 00 00 09</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">9</td> | <td align="left">9</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[9]</td> | <td align="left">leapsecond[9]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">126</td> | <td align="left">126</td> | |||
<td align="left">15 9f ca 89</td> | <td align="left">15 9f ca 89</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">362793609 (1981-06-30T23:59:60Z)</td> | <td align="left">362793609 (1981-06-30T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">130</td> | <td align="left">130</td> | |||
<td align="left">00 00 00 0a</td> | <td align="left">00 00 00 0a</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">10</td> | <td align="left">10</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[10]</td> | <td align="left">leapsecond[10]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">134</td> | <td align="left">134</td> | |||
<td align="left">17 80 fe 0a</td> | <td align="left">17 80 fe 0a</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">394329610 (1982-06-30T23:59:60Z)</td> | <td align="left">394329610 (1982-06-30T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">138</td> | <td align="left">138</td> | |||
<td align="left">00 00 00 0b</td> | <td align="left">00 00 00 0b</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">11</td> | <td align="left">11</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[11]</td> | <td align="left">leapsecond[11]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">142</td> | <td align="left">142</td> | |||
<td align="left">19 62 31 8b</td> | <td align="left">19 62 31 8b</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">425865611 (1983-06-30T23:59:60Z)</td> | <td align="left">425865611 (1983-06-30T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">146</td> | <td align="left">146</td> | |||
<td align="left">00 00 00 0c</td> | <td align="left">00 00 00 0c</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">12</td> | <td align="left">12</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[12]</td> | <td align="left">leapsecond[12]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">150</td> | <td align="left">150</td> | |||
<td align="left">1d 25 ea 0c</td> | <td align="left">1d 25 ea 0c</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">489024012 (1985-06-30T23:59:60Z)</td> | <td align="left">489024012 (1985-06-30T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">154</td> | <td align="left">154</td> | |||
<td align="left">00 00 00 0d</td> | <td align="left">00 00 00 0d</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">13</td> | <td align="left">13</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[13]</td> | <td align="left">leapsecond[13]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">158</td> | <td align="left">158</td> | |||
<td align="left">21 da e5 0d</td> | <td align="left">21 da e5 0d</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">567993613 (1987-12-31T23:59:60Z)</td> | <td align="left">567993613 (1987-12-31T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">162</td> | <td align="left">162</td> | |||
<td align="left">00 00 00 0e</td> | <td align="left">00 00 00 0e</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">14</td> | <td align="left">14</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[14]</td> | <td align="left">leapsecond[14]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">166</td> | <td align="left">166</td> | |||
<td align="left">25 9e 9d 8e</td> | <td align="left">25 9e 9d 8e</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">631152014 (1989-12-31T23:59:60Z)</td> | <td align="left">631152014 (1989-12-31T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">170</td> | <td align="left">170</td> | |||
<td align="left">00 00 00 0f</td> | <td align="left">00 00 00 0f</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">15</td> | <td align="left">15</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[15]</td> | <td align="left">leapsecond[15]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">174</td> | <td align="left">174</td> | |||
<td align="left">27 7f d1 0f</td> | <td align="left">27 7f d1 0f</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">662688015 (1990-12-31T23:59:60Z)</td> | <td align="left">662688015 (1990-12-31T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">178</td> | <td align="left">178</td> | |||
<td align="left">00 00 00 10</td> | <td align="left">00 00 00 10</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">16</td> | <td align="left">16</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[16]</td> | <td align="left">leapsecond[16]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">182</td> | <td align="left">182</td> | |||
<td align="left">2a 50 f5 90</td> | <td align="left">2a 50 f5 90</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">709948816 (1992-06-30T23:59:60Z)</td> | <td align="left">709948816 (1992-06-30T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">186</td> | <td align="left">186</td> | |||
<td align="left">00 00 00 11</td> | <td align="left">00 00 00 11</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">17</td> | <td align="left">17</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[17]</td> | <td align="left">leapsecond[17]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">190</td> | <td align="left">190</td> | |||
<td align="left">2c 32 29 11</td> | <td align="left">2c 32 29 11</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">741484817 (1993-06-30T23:59:60Z)</td> | <td align="left">741484817 (1993-06-30T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">194</td> | <td align="left">194</td> | |||
<td align="left">00 00 00 12</td> | <td align="left">00 00 00 12</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">18</td> | <td align="left">18</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[18]</td> | <td align="left">leapsecond[18]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">198</td> | <td align="left">198</td> | |||
<td align="left">2e 13 5c 92</td> | <td align="left">2e 13 5c 92</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">773020818 (1994-06-30T23:59:60Z)</td> | <td align="left">773020818 (1994-06-30T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">202</td> | <td align="left">202</td> | |||
<td align="left">00 00 00 13</td> | <td align="left">00 00 00 13</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">19</td> | <td align="left">19</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[19]</td> | <td align="left">leapsecond[19]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">206</td> | <td align="left">206</td> | |||
<td align="left">30 e7 24 13</td> | <td align="left">30 e7 24 13</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">820454419 (1995-12-31T23:59:60Z)</td> | <td align="left">820454419 (1995-12-31T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">210</td> | <td align="left">210</td> | |||
<td align="left">00 00 00 14</td> | <td align="left">00 00 00 14</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">20</td> | <td align="left">20</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[20]</td> | <td align="left">leapsecond[20]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">214</td> | <td align="left">214</td> | |||
<td align="left">33 b8 48 94</td> | <td align="left">33 b8 48 94</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">867715220 (1997-06-30T23:59:60Z)</td> | <td align="left">867715220 (1997-06-30T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">218</td> | <td align="left">218</td> | |||
<td align="left">00 00 00 15</td> | <td align="left">00 00 00 15</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">21</td> | <td align="left">21</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[21]</td> | <td align="left">leapsecond[21]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">222</td> | <td align="left">222</td> | |||
<td align="left">36 8c 10 15</td> | <td align="left">36 8c 10 15</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">915148821 (1998-12-31T23:59:60Z)</td> | <td align="left">915148821 (1998-12-31T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">226</td> | <td align="left">226</td> | |||
<td align="left">00 00 00 16</td> | <td align="left">00 00 00 16</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">22</td> | <td align="left">22</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[22]</td> | <td align="left">leapsecond[22]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">230</td> | <td align="left">230</td> | |||
<td align="left">43 b7 1b 96</td> | <td align="left">43 b7 1b 96</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">1136073622 (2005-12-31T23:59:60Z)</td> | <td align="left">1136073622 (2005-12-31T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">234</td> | <td align="left">234</td> | |||
<td align="left">00 00 00 17</td> | <td align="left">00 00 00 17</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">23</td> | <td align="left">23</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[23]</td> | <td align="left">leapsecond[23]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">238</td> | <td align="left">238</td> | |||
<td align="left">49 5c 07 97</td> | <td align="left">49 5c 07 97</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">1230768023 (2008-12-31T23:59:60Z)</td> | <td align="left">1230768023 (2008-12-31T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">242</td> | <td align="left">242</td> | |||
<td align="left">00 00 00 18</td> | <td align="left">00 00 00 18</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">24</td> | <td align="left">24</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[24]</td> | <td align="left">leapsecond[24]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">246</td> | <td align="left">246</td> | |||
<td align="left">4f ef 93 18</td> | <td align="left">4f ef 93 18</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">1341100824 (2012-06-30T23:59:60Z)</td> | <td align="left">1341100824 (2012-06-30T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">250</td> | <td align="left">250</td> | |||
<td align="left">00 00 00 19</td> | <td align="left">00 00 00 19</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">25</td> | <td align="left">25</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[25]</td> | <td align="left">leapsecond[25]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">254</td> | <td align="left">254</td> | |||
<td align="left">55 93 2d 99</td> | <td align="left">55 93 2d 99</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">1435708825 (2015-06-30T23:59:60Z)</td> | <td align="left">1435708825 (2015-06-30T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">258</td> | <td align="left">258</td> | |||
<td align="left">00 00 00 1a</td> | <td align="left">00 00 00 1a</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">26</td> | <td align="left">26</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[26]</td> | <td align="left">leapsecond[26]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">262</td> | <td align="left">262</td> | |||
<td align="left">58 68 46 9a</td> | <td align="left">58 68 46 9a</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">1483228826 (2016-12-31T23:59:60Z)</td> | <td align="left">1483228826 (2016-12-31T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 2361 ¶ | skipping to change at line 2232 ¶ | |||
<td align="left">0 (local)</td> | <td align="left">0 (local)</td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
<t>To determine TAI corresponding | <t>To determine TAI corresponding | |||
to 2000-01-01T00:00:00Z (UNIX time = 946684800), | to 2000-01-01T00:00:00Z (UNIX time = 946684800), | |||
the following procedure would be followed:</t> | the following procedure would be followed:</t> | |||
<ol spacing="normal" type="1"> | <ol spacing="normal" type="1"> | |||
<li>Find the latest leap-second occurrence prior to the | <li>Find the latest leap-second occurrence prior to the time of | |||
time of interest (leapsecond[21]) and note the correction | interest (leapsecond[21]) and note the correction value | |||
value (LEAPCORR = 22).</li> | (LEAPCORR = 22).</li> | |||
<li>Add LEAPCORR + 10 to the time of interest to | <li>Add LEAPCORR + 10 to the time of interest to yield TAI of | |||
yield TAI of 2000-01-01T00:00:32.</li> | 2000-01-01T00:00:32.</li> | |||
</ol> | </ol> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Version 2 File Representing Pacific/Honolulu</name> | <name>Version 2 File Representing Pacific/Honolulu</name> | |||
<table align="center"> | <table align="center"> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">File Offset</th> | <th align="left">File Offset</th> | |||
skipping to change at line 2398 ¶ | skipping to change at line 2269 ¶ | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">004</td> | <td align="left">004</td> | |||
<td align="left">32</td> | <td align="left">32</td> | |||
<td align="left">version</td> | <td align="left">version</td> | |||
<td align="left">'2' (2)</td> | <td align="left">'2' (2)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">005</td> | <td align="left">005</td> | |||
<td align="left">00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</td> | <td align="left">00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</td> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">020</td> | <td align="left">020</td> | |||
<td align="left">00 00 00 06</td> | <td align="left">00 00 00 06</td> | |||
<td align="left">isutcnt</td> | <td align="left">isutcnt</td> | |||
<td align="left">6</td> | <td align="left">6</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">024</td> | <td align="left">024</td> | |||
<td align="left">00 00 00 06</td> | <td align="left">00 00 00 06</td> | |||
skipping to change at line 2531 ¶ | skipping to change at line 2401 ¶ | |||
<tr> | <tr> | |||
<td align="left">078</td> | <td align="left">078</td> | |||
<td align="left">05</td> | <td align="left">05</td> | |||
<td align="left">trans type[6]</td> | <td align="left">trans type[6]</td> | |||
<td align="left">5</td> | <td align="left">5</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[0]</td> | <td align="left">localtimetype[0]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">079</td> | <td align="left">079</td> | |||
<td align="left">ff ff 6c 02</td> | <td align="left">ff ff 6c 02</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">-37886 (-10:31:26)</td> | <td align="left">-37886 (-10:31:26)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 2558 ¶ | skipping to change at line 2427 ¶ | |||
<tr> | <tr> | |||
<td align="left">084</td> | <td align="left">084</td> | |||
<td align="left">00</td> | <td align="left">00</td> | |||
<td align="left">desigidx</td> | <td align="left">desigidx</td> | |||
<td align="left">0</td> | <td align="left">0</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[1]</td> | <td align="left">localtimetype[1]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">085</td> | <td align="left">085</td> | |||
<td align="left">ff ff 6c 58</td> | <td align="left">ff ff 6c 58</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">-37800 (-10:30)</td> | <td align="left">-37800 (-10:30)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 2585 ¶ | skipping to change at line 2453 ¶ | |||
<tr> | <tr> | |||
<td align="left">090</td> | <td align="left">090</td> | |||
<td align="left">04</td> | <td align="left">04</td> | |||
<td align="left">desigidx</td> | <td align="left">desigidx</td> | |||
<td align="left">4</td> | <td align="left">4</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[2]</td> | <td align="left">localtimetype[2]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">091</td> | <td align="left">091</td> | |||
<td align="left">ff ff 7a 68</td> | <td align="left">ff ff 7a 68</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">-34200 (-09:30)</td> | <td align="left">-34200 (-09:30)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 2612 ¶ | skipping to change at line 2479 ¶ | |||
<tr> | <tr> | |||
<td align="left">096</td> | <td align="left">096</td> | |||
<td align="left">08</td> | <td align="left">08</td> | |||
<td align="left">desigidx</td> | <td align="left">desigidx</td> | |||
<td align="left">8</td> | <td align="left">8</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[3]</td> | <td align="left">localtimetype[3]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">097</td> | <td align="left">097</td> | |||
<td align="left">ff ff 7a 68</td> | <td align="left">ff ff 7a 68</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">-34200 (-09:30)</td> | <td align="left">-34200 (-09:30)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 2639 ¶ | skipping to change at line 2505 ¶ | |||
<tr> | <tr> | |||
<td align="left">102</td> | <td align="left">102</td> | |||
<td align="left">0c</td> | <td align="left">0c</td> | |||
<td align="left">desigidx</td> | <td align="left">desigidx</td> | |||
<td align="left">12</td> | <td align="left">12</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[4]</td> | <td align="left">localtimetype[4]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">103</td> | <td align="left">103</td> | |||
<td align="left">ff ff 7a 68</td> | <td align="left">ff ff 7a 68</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">-34200 (-09:30)</td> | <td align="left">-34200 (-09:30)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 2666 ¶ | skipping to change at line 2531 ¶ | |||
<tr> | <tr> | |||
<td align="left">108</td> | <td align="left">108</td> | |||
<td align="left">10</td> | <td align="left">10</td> | |||
<td align="left">desigidx</td> | <td align="left">desigidx</td> | |||
<td align="left">16</td> | <td align="left">16</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[5]</td> | <td align="left">localtimetype[5]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">109</td> | <td align="left">109</td> | |||
<td align="left">ff ff 73 60</td> | <td align="left">ff ff 73 60</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">-36000 (-10:00)</td> | <td align="left">-36000 (-10:00)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 2818 ¶ | skipping to change at line 2682 ¶ | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">151</td> | <td align="left">151</td> | |||
<td align="left">32</td> | <td align="left">32</td> | |||
<td align="left">version</td> | <td align="left">version</td> | |||
<td align="left">'2' (2)</td> | <td align="left">'2' (2)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">152</td> | <td align="left">152</td> | |||
<td align="left">00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</td> | <td align="left">00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</td> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">167</td> | <td align="left">167</td> | |||
<td align="left">00 00 00 06</td> | <td align="left">00 00 00 06</td> | |||
<td align="left">isutcnt</td> | <td align="left">isutcnt</td> | |||
<td align="left">6</td> | <td align="left">6</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">171</td> | <td align="left">171</td> | |||
<td align="left">00 00 00 06</td> | <td align="left">00 00 00 06</td> | |||
skipping to change at line 2951 ¶ | skipping to change at line 2814 ¶ | |||
<tr> | <tr> | |||
<td align="left">253</td> | <td align="left">253</td> | |||
<td align="left">05</td> | <td align="left">05</td> | |||
<td align="left">trans type[6]</td> | <td align="left">trans type[6]</td> | |||
<td align="left">5</td> | <td align="left">5</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[0]</td> | <td align="left">localtimetype[0]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">254</td> | <td align="left">254</td> | |||
<td align="left">ff ff 6c 02</td> | <td align="left">ff ff 6c 02</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">-37886 (-10:31:26)</td> | <td align="left">-37886 (-10:31:26)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 2978 ¶ | skipping to change at line 2840 ¶ | |||
<tr> | <tr> | |||
<td align="left">259</td> | <td align="left">259</td> | |||
<td align="left">00</td> | <td align="left">00</td> | |||
<td align="left">desigidx</td> | <td align="left">desigidx</td> | |||
<td align="left">0</td> | <td align="left">0</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[1]</td> | <td align="left">localtimetype[1]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">260</td> | <td align="left">260</td> | |||
<td align="left">ff ff 6c 58</td> | <td align="left">ff ff 6c 58</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">-37800 (-10:30)</td> | <td align="left">-37800 (-10:30)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 3005 ¶ | skipping to change at line 2866 ¶ | |||
<tr> | <tr> | |||
<td align="left">265</td> | <td align="left">265</td> | |||
<td align="left">04</td> | <td align="left">04</td> | |||
<td align="left">desigidx</td> | <td align="left">desigidx</td> | |||
<td align="left">4</td> | <td align="left">4</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[2]</td> | <td align="left">localtimetype[2]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">266</td> | <td align="left">266</td> | |||
<td align="left">ff ff 7a 68</td> | <td align="left">ff ff 7a 68</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">-34200 (-09:30)</td> | <td align="left">-34200 (-09:30)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 3032 ¶ | skipping to change at line 2892 ¶ | |||
<tr> | <tr> | |||
<td align="left">271</td> | <td align="left">271</td> | |||
<td align="left">08</td> | <td align="left">08</td> | |||
<td align="left">desigidx</td> | <td align="left">desigidx</td> | |||
<td align="left">8</td> | <td align="left">8</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[3]</td> | <td align="left">localtimetype[3]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">272</td> | <td align="left">272</td> | |||
<td align="left">ff ff 7a 68</td> | <td align="left">ff ff 7a 68</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">-34200 (-09:30)</td> | <td align="left">-34200 (-09:30)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 3059 ¶ | skipping to change at line 2918 ¶ | |||
<tr> | <tr> | |||
<td align="left">277</td> | <td align="left">277</td> | |||
<td align="left">0c</td> | <td align="left">0c</td> | |||
<td align="left">desigidx</td> | <td align="left">desigidx</td> | |||
<td align="left">12</td> | <td align="left">12</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[4]</td> | <td align="left">localtimetype[4]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">278</td> | <td align="left">278</td> | |||
<td align="left">ff ff 7a 68</td> | <td align="left">ff ff 7a 68</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">-34200 (-09:30)</td> | <td align="left">-34200 (-09:30)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 3086 ¶ | skipping to change at line 2944 ¶ | |||
<tr> | <tr> | |||
<td align="left">283</td> | <td align="left">283</td> | |||
<td align="left">10</td> | <td align="left">10</td> | |||
<td align="left">desigidx</td> | <td align="left">desigidx</td> | |||
<td align="left">16</td> | <td align="left">16</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[5]</td> | <td align="left">localtimetype[5]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">284</td> | <td align="left">284</td> | |||
<td align="left">ff ff 73 60</td> | <td align="left">ff ff 73 60</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">-36000 (-10:00)</td> | <td align="left">-36000 (-10:00)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 3276 ¶ | skipping to change at line 3133 ¶ | |||
<t>To determine the local time in this time zone corresponding | <t>To determine the local time in this time zone corresponding | |||
to 2019-01-01T00:00:00Z (UNIX time = 1546300800), the following | to 2019-01-01T00:00:00Z (UNIX time = 1546300800), the following | |||
procedure would be followed:</t> | procedure would be followed:</t> | |||
<ol spacing="normal" type="1"> | <ol spacing="normal" type="1"> | |||
<li>Find the latest time transition prior to the time of | <li>Find the latest time transition prior to the time of | |||
interest (there is no such transition).</li> | interest (there is no such transition).</li> | |||
<li>Look up the TZ string in the footer ("HST10"), which | <li>Look up the TZ string in the footer ("HST10"), which | |||
indicates that the time zone designation is "HST" year-round, and | indicates that the time zone designation is "HST" year-round and | |||
the offset to UTC is 10:00.</li> | the offset to UTC is 10:00.</li> | |||
<li>Subtract the UTC offset from the time of interest to | <li>Subtract the UTC offset from the time of interest to | |||
yield a standard local time of 2018-12-31T14:00:00-10:00 (HST).</li> | yield a standard local time of 2018-12-31T14:00:00-10:00 (HST).</li> | |||
</ol> | </ol> | |||
</section> | </section> | |||
<section anchor="v2truncated" numbered="true" toc="default"> | <section anchor="v2truncated" numbered="true" toc="default"> | |||
<name>Truncated Version 2 File Representing Pacific/Johnston</name> | <name>Truncated Version 2 File Representing Pacific/Johnston</name> | |||
<t>The following TZif file has been truncated to end on | <t>The following TZif file has been truncated to end on | |||
2004-06-161T00:00:00Z (the atoll was abandoned sometime on | 2004-06-161T00:00:00Z (the atoll was abandoned sometime on | |||
2004-06-15).</t> | 2004-06-15).</t> | |||
<t>In this example:</t> | <t>In this example:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>The version 1 header contains only the required | <li>The version 1 header contains only the required | |||
minimum data, which will be ignored by readers.</li> | minimum data, which will be ignored by readers.</li> | |||
<li>The version 2 header leverages the fact that by specifying | <li>The version 2 header leverages the fact that, by specifying | |||
'isutcnt' and 'isstdcnt' as zero, all transition times | 'isutcnt' and 'isstdcnt' as zero, all transition times | |||
associated with local time types are assumed to be specified | associated with local time types are assumed to be specified | |||
as local wall-clock time | as local wall-clock time | |||
(see the definitions of UT/local indicators | (see the definitions of UT/local indicators | |||
and standard/wall indicators in | and standard/wall indicators in | |||
<xref target="data" format="default"/>).</li> | <xref target="data" format="default"/>).</li> | |||
<li>The time type of the last transition has designation "-00", | <li>The time type of the last transition has designation "-00", | |||
indicating that local time is unspecified.</li> | indicating that local time is unspecified.</li> | |||
skipping to change at line 3380 ¶ | skipping to change at line 3237 ¶ | |||
<tr> | <tr> | |||
<td align="left">040</td> | <td align="left">040</td> | |||
<td align="left">00 00 00 01</td> | <td align="left">00 00 00 01</td> | |||
<td align="left">charcnt</td> | <td align="left">charcnt</td> | |||
<td align="left">1</td> | <td align="left">1</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[0]</td> | <td align="left">localtimetype[0]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">044</td> | <td align="left">044</td> | |||
<td align="left">00 00 00 00</td> | <td align="left">00 00 00 00</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">0 (+00:00)</td> | <td align="left">0 (+00:00)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 3430 ¶ | skipping to change at line 3286 ¶ | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">055</td> | <td align="left">055</td> | |||
<td align="left">32</td> | <td align="left">32</td> | |||
<td align="left">version</td> | <td align="left">version</td> | |||
<td align="left">'2' (2)</td> | <td align="left">'2' (2)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">056</td> | <td align="left">056</td> | |||
<td align="left">00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</td> | <td align="left">00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</td> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">071</td> | <td align="left">071</td> | |||
<td align="left">00 00 00 00</td> | <td align="left">00 00 00 00</td> | |||
<td align="left">isutcnt</td> | <td align="left">isutcnt</td> | |||
<td align="left">0</td> | <td align="left">0</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">075</td> | <td align="left">075</td> | |||
<td align="left">00 00 00 00</td> | <td align="left">00 00 00 00</td> | |||
skipping to change at line 3575 ¶ | skipping to change at line 3430 ¶ | |||
<tr> | <tr> | |||
<td align="left">166</td> | <td align="left">166</td> | |||
<td align="left">01</td> | <td align="left">01</td> | |||
<td align="left">trans type[7]</td> | <td align="left">trans type[7]</td> | |||
<td align="left">1</td> | <td align="left">1</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[0]</td> | <td align="left">localtimetype[0]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">167</td> | <td align="left">167</td> | |||
<td align="left">ff ff 6c 02</td> | <td align="left">ff ff 6c 02</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">-37886 (-10:31:26)</td> | <td align="left">-37886 (-10:31:26)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 3602 ¶ | skipping to change at line 3456 ¶ | |||
<tr> | <tr> | |||
<td align="left">172</td> | <td align="left">172</td> | |||
<td align="left">04</td> | <td align="left">04</td> | |||
<td align="left">desigidx</td> | <td align="left">desigidx</td> | |||
<td align="left">4</td> | <td align="left">4</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[1]</td> | <td align="left">localtimetype[1]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">173</td> | <td align="left">173</td> | |||
<td align="left">00 00 00 00</td> | <td align="left">00 00 00 00</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">0 (+00:00)</td> | <td align="left">0 (+00:00)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 3629 ¶ | skipping to change at line 3482 ¶ | |||
<tr> | <tr> | |||
<td align="left">178</td> | <td align="left">178</td> | |||
<td align="left">00</td> | <td align="left">00</td> | |||
<td align="left">desigidx</td> | <td align="left">desigidx</td> | |||
<td align="left">0</td> | <td align="left">0</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[2]</td> | <td align="left">localtimetype[2]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">179</td> | <td align="left">179</td> | |||
<td align="left">ff ff 6c 58</td> | <td align="left">ff ff 6c 58</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">-37800 (-10:30)</td> | <td align="left">-37800 (-10:30)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 3656 ¶ | skipping to change at line 3508 ¶ | |||
<tr> | <tr> | |||
<td align="left">184</td> | <td align="left">184</td> | |||
<td align="left">08</td> | <td align="left">08</td> | |||
<td align="left">desigidx</td> | <td align="left">desigidx</td> | |||
<td align="left">8</td> | <td align="left">8</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[3]</td> | <td align="left">localtimetype[3]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">185</td> | <td align="left">185</td> | |||
<td align="left">ff ff 7a 68</td> | <td align="left">ff ff 7a 68</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">-34200 (-09:30)</td> | <td align="left">-34200 (-09:30)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 3683 ¶ | skipping to change at line 3534 ¶ | |||
<tr> | <tr> | |||
<td align="left">190</td> | <td align="left">190</td> | |||
<td align="left">0c</td> | <td align="left">0c</td> | |||
<td align="left">desigidx</td> | <td align="left">desigidx</td> | |||
<td align="left">12</td> | <td align="left">12</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[4]</td> | <td align="left">localtimetype[4]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">191</td> | <td align="left">191</td> | |||
<td align="left">ff ff 7a 68</td> | <td align="left">ff ff 7a 68</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">-34200 (-09:30)</td> | <td align="left">-34200 (-09:30)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 3710 ¶ | skipping to change at line 3560 ¶ | |||
<tr> | <tr> | |||
<td align="left">196</td> | <td align="left">196</td> | |||
<td align="left">10</td> | <td align="left">10</td> | |||
<td align="left">desigidx</td> | <td align="left">desigidx</td> | |||
<td align="left">16</td> | <td align="left">16</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[5]</td> | <td align="left">localtimetype[5]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">197</td> | <td align="left">197</td> | |||
<td align="left">ff ff 7a 68</td> | <td align="left">ff ff 7a 68</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">-34200 (-09:30)</td> | <td align="left">-34200 (-09:30)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 3737 ¶ | skipping to change at line 3586 ¶ | |||
<tr> | <tr> | |||
<td align="left">202</td> | <td align="left">202</td> | |||
<td align="left">14</td> | <td align="left">14</td> | |||
<td align="left">desigidx</td> | <td align="left">desigidx</td> | |||
<td align="left">20</td> | <td align="left">20</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[6]</td> | <td align="left">localtimetype[6]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">203</td> | <td align="left">203</td> | |||
<td align="left">ff ff 73 60</td> | <td align="left">ff ff 73 60</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">-36000 (-10:00)</td> | <td align="left">-36000 (-10:00)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 3833 ¶ | skipping to change at line 3681 ¶ | |||
<section anchor="v3example" numbered="true" toc="default"> | <section anchor="v3example" numbered="true" toc="default"> | |||
<name>Truncated Version 3 File Representing Asia/Jerusalem</name> | <name>Truncated Version 3 File Representing Asia/Jerusalem</name> | |||
<t>The following TZif file has been truncated to start on | <t>The following TZif file has been truncated to start on | |||
2038-01-01T00:00:00Z.</t> | 2038-01-01T00:00:00Z.</t> | |||
<t>In this example:</t> | <t>In this example:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>The start time value can not be represented using 32 | <li>The start time value cannot be represented using 32 | |||
bits, so the version 1 header contains only the required | bits, so the version 1 header contains only the required | |||
minimum data, which will be ignored by readers.</li> | minimum data, which will be ignored by readers.</li> | |||
<li>The version 3 header leverages the fact that by specifying | <li>The version 3 header leverages the fact that, by specifying | |||
'isutcnt' and 'isstdcnt' as zero, all transition times | 'isutcnt' and 'isstdcnt' as zero, all transition times | |||
associated with local time types are assumed to be specified | associated with local time types are assumed to be specified | |||
as local wall-clock time | as local wall-clock time | |||
(see the definitions of UT/local indicators | (see the definitions of UT/local indicators | |||
and standard/wall indicators in | and standard/wall indicators in | |||
<xref target="data" format="default"/>).</li> | <xref target="data" format="default"/>).</li> | |||
<li>Time type 0 has designation "-00", indicating that local | <li>Time type 0 has designation "-00", indicating that local | |||
time is unspecified prior to the truncation time.</li> | time is unspecified prior to the truncation time.</li> | |||
skipping to change at line 3877 ¶ | skipping to change at line 3725 ¶ | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">004</td> | <td align="left">004</td> | |||
<td align="left">33</td> | <td align="left">33</td> | |||
<td align="left">version</td> | <td align="left">version</td> | |||
<td align="left">'3' (3)</td> | <td align="left">'3' (3)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">005</td> | <td align="left">005</td> | |||
<td align="left">00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</td> | <td align="left">00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</td> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">020</td> | <td align="left">020</td> | |||
<td align="left">00 00 00 00</td> | <td align="left">00 00 00 00</td> | |||
<td align="left">isutcnt</td> | <td align="left">isutcnt</td> | |||
<td align="left">0</td> | <td align="left">0</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">024</td> | <td align="left">024</td> | |||
<td align="left">00 00 00 00</td> | <td align="left">00 00 00 00</td> | |||
skipping to change at line 3920 ¶ | skipping to change at line 3767 ¶ | |||
<tr> | <tr> | |||
<td align="left">040</td> | <td align="left">040</td> | |||
<td align="left">00 00 00 01</td> | <td align="left">00 00 00 01</td> | |||
<td align="left">charcnt</td> | <td align="left">charcnt</td> | |||
<td align="left">1</td> | <td align="left">1</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[0]</td> | <td align="left">localtimetype[0]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">044</td> | <td align="left">044</td> | |||
<td align="left">00 00 00 00</td> | <td align="left">00 00 00 00</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">0 (+00:00)</td> | <td align="left">0 (+00:00)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 3970 ¶ | skipping to change at line 3816 ¶ | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">055</td> | <td align="left">055</td> | |||
<td align="left">33</td> | <td align="left">33</td> | |||
<td align="left">version</td> | <td align="left">version</td> | |||
<td align="left">'3' (3)</td> | <td align="left">'3' (3)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">056</td> | <td align="left">056</td> | |||
<td align="left">00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</td> | <td align="left">00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</td> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">071</td> | <td align="left">071</td> | |||
<td align="left">00 00 00 00</td> | <td align="left">00 00 00 00</td> | |||
<td align="left">isutcnt</td> | <td align="left">isutcnt</td> | |||
<td align="left">0</td> | <td align="left">0</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">075</td> | <td align="left">075</td> | |||
<td align="left">00 00 00 00</td> | <td align="left">00 00 00 00</td> | |||
skipping to change at line 4031 ¶ | skipping to change at line 3876 ¶ | |||
<tr> | <tr> | |||
<td align="left">103</td> | <td align="left">103</td> | |||
<td align="left">01</td> | <td align="left">01</td> | |||
<td align="left">trans type[0]</td> | <td align="left">trans type[0]</td> | |||
<td align="left">1</td> | <td align="left">1</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[0]</td> | <td align="left">localtimetype[0]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">104</td> | <td align="left">104</td> | |||
<td align="left">00 00 00 00</td> | <td align="left">00 00 00 00</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">0 (+00:00)</td> | <td align="left">0 (+00:00)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 4058 ¶ | skipping to change at line 3902 ¶ | |||
<tr> | <tr> | |||
<td align="left">109</td> | <td align="left">109</td> | |||
<td align="left">00</td> | <td align="left">00</td> | |||
<td align="left">desigidx</td> | <td align="left">desigidx</td> | |||
<td align="left">0</td> | <td align="left">0</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[1]</td> | <td align="left">localtimetype[1]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">110</td> | <td align="left">110</td> | |||
<td align="left">00 00 1c 20</td> | <td align="left">00 00 1c 20</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">7200 (+02:00)</td> | <td align="left">7200 (+02:00)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 4134 ¶ | skipping to change at line 3977 ¶ | |||
<t>The following TZif file has been truncated to start on | <t>The following TZif file has been truncated to start on | |||
2022-01-01T00:00:00Z.</t> | 2022-01-01T00:00:00Z.</t> | |||
<t>In this example:</t> | <t>In this example:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>The version 1 header contains only the required | <li>The version 1 header contains only the required | |||
minimum data, which will be ignored by readers.</li> | minimum data, which will be ignored by readers.</li> | |||
<li>The version 4 header leverages the fact that by specifying | <li>The version 4 header leverages the fact that, by specifying | |||
'isutcnt' and 'isstdcnt' as zero, all transition times | 'isutcnt' and 'isstdcnt' as zero, all transition times | |||
associated with local time types are assumed to be specified | associated with local time types are assumed to be specified | |||
as local wall-clock time | as local wall-clock time | |||
(see the definitions of UT/local indicators | (see the definitions of UT/local indicators | |||
and standard/wall indicators in | and standard/wall indicators in | |||
<xref target="data" format="default"/>).</li> | <xref target="data" format="default"/>).</li> | |||
<li>Time type 0 has designation "-00", indicating that local | <li>Time type 0 has designation "-00", indicating that local | |||
time is unspecified prior to the truncation time.</li> | time is unspecified prior to the truncation time.</li> | |||
skipping to change at line 4181 ¶ | skipping to change at line 4024 ¶ | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">004</td> | <td align="left">004</td> | |||
<td align="left">34</td> | <td align="left">34</td> | |||
<td align="left">version</td> | <td align="left">version</td> | |||
<td align="left">'4' (4)</td> | <td align="left">'4' (4)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">005</td> | <td align="left">005</td> | |||
<td align="left">00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</td> | <td align="left">00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</td> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">020</td> | <td align="left">020</td> | |||
<td align="left">00 00 00 00</td> | <td align="left">00 00 00 00</td> | |||
<td align="left">isutcnt</td> | <td align="left">isutcnt</td> | |||
<td align="left">0</td> | <td align="left">0</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">024</td> | <td align="left">024</td> | |||
<td align="left">00 00 00 00</td> | <td align="left">00 00 00 00</td> | |||
skipping to change at line 4224 ¶ | skipping to change at line 4066 ¶ | |||
<tr> | <tr> | |||
<td align="left">040</td> | <td align="left">040</td> | |||
<td align="left">00 00 00 01</td> | <td align="left">00 00 00 01</td> | |||
<td align="left">charcnt</td> | <td align="left">charcnt</td> | |||
<td align="left">1</td> | <td align="left">1</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[0]</td> | <td align="left">localtimetype[0]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">044</td> | <td align="left">044</td> | |||
<td align="left">00 00 00 00</td> | <td align="left">00 00 00 00</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">0 (+00:00)</td> | <td align="left">0 (+00:00)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 4274 ¶ | skipping to change at line 4115 ¶ | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">055</td> | <td align="left">055</td> | |||
<td align="left">34</td> | <td align="left">34</td> | |||
<td align="left">version</td> | <td align="left">version</td> | |||
<td align="left">'4' (4)</td> | <td align="left">'4' (4)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">056</td> | <td align="left">056</td> | |||
<td align="left">00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</td> | <td align="left">00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</td> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">071</td> | <td align="left">071</td> | |||
<td align="left">00 00 00 00</td> | <td align="left">00 00 00 00</td> | |||
<td align="left">isutcnt</td> | <td align="left">isutcnt</td> | |||
<td align="left">0</td> | <td align="left">0</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">075</td> | <td align="left">075</td> | |||
<td align="left">00 00 00 00</td> | <td align="left">00 00 00 00</td> | |||
skipping to change at line 4335 ¶ | skipping to change at line 4175 ¶ | |||
<tr> | <tr> | |||
<td align="left">103</td> | <td align="left">103</td> | |||
<td align="left">01</td> | <td align="left">01</td> | |||
<td align="left">trans type[0]</td> | <td align="left">trans type[0]</td> | |||
<td align="left">1</td> | <td align="left">1</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[0]</td> | <td align="left">localtimetype[0]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">104</td> | <td align="left">104</td> | |||
<td align="left">00 00 00 00</td> | <td align="left">00 00 00 00</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">0 (+00:00)</td> | <td align="left">0 (+00:00)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 4362 ¶ | skipping to change at line 4201 ¶ | |||
<tr> | <tr> | |||
<td align="left">109</td> | <td align="left">109</td> | |||
<td align="left">00</td> | <td align="left">00</td> | |||
<td align="left">desigidx</td> | <td align="left">desigidx</td> | |||
<td align="left">0</td> | <td align="left">0</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">localtimetype[1]</td> | <td align="left">localtimetype[1]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">110</td> | <td align="left">110</td> | |||
<td align="left">00 00 00 00</td> | <td align="left">00 00 00 00</td> | |||
<td align="left">utoff</td> | <td align="left">utoff</td> | |||
<td align="left">0 (+00:00)</td> | <td align="left">0 (+00:00)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 4404 ¶ | skipping to change at line 4242 ¶ | |||
<tr> | <tr> | |||
<td align="left">120</td> | <td align="left">120</td> | |||
<td align="left">47 4d 54 00</td> | <td align="left">47 4d 54 00</td> | |||
<td align="left">designations[4]</td> | <td align="left">designations[4]</td> | |||
<td align="left">"GMT\0"</td> | <td align="left">"GMT\0"</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[0]</td> | <td align="left">leapsecond[0]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">124</td> | <td align="left">124</td> | |||
<td align="left">00 00 00 00 58 68 46 9a</td> | <td align="left">00 00 00 00 58 68 46 9a</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">1483228826 (2016-12-31T23:59:60Z)</td> | <td align="left">1483228826 (2016-12-31T23:59:60Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">132</td> | <td align="left">132</td> | |||
<td align="left">00 00 00 1b</td> | <td align="left">00 00 00 1b</td> | |||
<td align="left">correction</td> | <td align="left">correction</td> | |||
<td align="left">27</td> | <td align="left">27</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td colspan="4"/> | <td colspan="4"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"></td> | <td colspan="2" align="left"></td> | |||
<td align="left"></td> | ||||
<td align="left">leapsecond[1]</td> | <td align="left">leapsecond[1]</td> | |||
<td align="left"></td> | <td align="left"></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">136</td> | <td align="left">136</td> | |||
<td align="left">00 00 00 00 66 7d fd 1b</td> | <td align="left">00 00 00 00 66 7d fd 1b</td> | |||
<td align="left">occurrence</td> | <td align="left">occurrence</td> | |||
<td align="left">1719532827 (2024-06-28T00:00:01Z)</td> | <td align="left">1719532827 (2024-06-28T00:00:01Z)</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 4491 ¶ | skipping to change at line 4327 ¶ | |||
designation string "-00" denotes unspecified local time. | designation string "-00" denotes unspecified local time. | |||
Added recommendation that this designation string should be | Added recommendation that this designation string should be | |||
used for timestamps excluded by TZif file truncation.</li> | used for timestamps excluded by TZif file truncation.</li> | |||
<li>Required support in version 2 files for all-year daylight | <li>Required support in version 2 files for all-year daylight | |||
saving time, using POSIX TZ strings with negative DST, as this | saving time, using POSIX TZ strings with negative DST, as this | |||
is not an extension to POSIX (<xref target="permdst"/>).</li> | is not an extension to POSIX (<xref target="permdst"/>).</li> | |||
<li>Applied erratum <xref target="Err6435" format="default"/>.</li> | <li>Applied erratum <xref target="Err6435" format="default"/>.</li> | |||
<li>Addressed errata <xref target="Err6426" format="default"/> | <li>Addressed errata <xref target="Err6426" format="default"/>, | |||
and <xref target="Err6757" format="default"/> | <xref target="Err6757" format="default"/>, and | |||
<xref target="Err7681" format="default"/> | ||||
as well as several other errors in the examples.</li> | as well as several other errors in the examples.</li> | |||
<li>Added additional interoperabilty considerations and common | <li>Added additional interoperability considerations and common | |||
issues.</li> | issues.</li> | |||
<li>Added an <xref target="v2truncated" format="default"> | <li>Added an <xref target="v2truncated" format="default"> | |||
example of a TZif file truncated at the end.</xref></li> | example of a TZif file truncated at the end</xref>.</li> | |||
<li>Added informational notes to | <li>Added informational notes to | |||
<xref target="v3example" format="default"/>.</li> | <xref target="v3example" format="default"/>.</li> | |||
<li>Miscellaneous editorial changes.</li> | <li>Miscellaneous editorial changes.</li> | |||
</ul> | </ul> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<name>Change Log</name> | ||||
<t>This section is to be removed by RFC Editor before publication.</t> | ||||
<section numbered="true" toc="default"> | ||||
<name>Since rfc8536bis-14</name> | ||||
<ul spacing="normal"> | ||||
<li>Correct direction reversal with UT offsets -10 and +0530.</li> | ||||
</ul> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Since rfc8536bis-13</name> | ||||
<ul spacing="normal"> | ||||
<li>Referenced Section 8 of RFC 7808 in Security Considerations.</li> | ||||
<li>Changed some terminology in Appendix A to be more | ||||
inclusive.</li> | ||||
<li>Added Internationalization Considerations section and | ||||
clarified the requirements for time zone designation | ||||
strings.</li> | ||||
<li>Stiffened the requirements for truncating TZif files.</li> | ||||
</ul> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Since rfc8536bis-12</name> | ||||
<ul spacing="normal"> | ||||
<li>Clarified the difference between the two media types in their | ||||
IANA registrations.</li> | ||||
<li>Removed dates from references to dynamic content.</li> | ||||
</ul> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Since rfc8536bis-11</name> | ||||
<ul spacing="normal"> | ||||
<li>Clarified the consequences of not abiding by some SHOULDs.</li> | ||||
<li>Miscellaneous editorial changes.</li> | ||||
</ul> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Since rfc8536bis-10</name> | ||||
<ul spacing="normal"> | ||||
<li>Clarified in IANA Considerations that this document is updating | ||||
the existing media types.</li> | ||||
</ul> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Since rfc8536bis-09</name> | ||||
<ul spacing="normal"> | ||||
<li>Clarified text of the example in the description of | ||||
leap-second table expiration.</li> | ||||
</ul> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Since rfc8536bis-08</name> | ||||
<ul spacing="normal"> | ||||
<li>Added an example of a TZif file truncated at the | ||||
end.</li> | ||||
<li>Fixed utoff value of LMT in Honolulu example.</li> | ||||
<li>Updated "tz-link" URL.</li> | ||||
<li>Miscellaneous editorial changes.</li> | ||||
</ul> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Since rfc8536bis-07</name> | ||||
<ul spacing="normal"> | ||||
<li>Miscellaneous editorial changes.</li> | ||||
</ul> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Since rfc8536bis-06</name> | ||||
<ul spacing="normal"> | ||||
<li>Moved the specification of an all-year daylight saving time | ||||
<xref target="permdst" format="default">TZ string</xref>, | ||||
to its own section as it is NOT an extension.</li> | ||||
<li>Noted that should leap seconds to become discontinued | ||||
that leap-second tables SHOULD NOT expire.</li> | ||||
<li>Updated "tz-link" title and reference.</li> | ||||
<li>Updated reference to RFC 7231 to RFC 9110.</li> | ||||
<li>Miscellaneous editorial changes.</li> | ||||
</ul> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Since rfc8536bis-05</name> | ||||
<ul spacing="normal"> | ||||
<li>Clarified the specification of an all-year daylight saving time | ||||
<xref target="permdst" format="default">TZ string</xref>, | ||||
and changed the example to use negative DST.</li> | ||||
</ul> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Since rfc8536bis-04</name> | ||||
<ul spacing="normal"> | ||||
<li>None.</li> | ||||
</ul> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Since rfc8536bis-03</name> | ||||
<ul spacing="normal"> | ||||
<li>Noted that erratum <xref target="Err6757" format="default"/> | ||||
has been addressed.</li> | ||||
<li>Added a definition of Leap Second, including UTC month.</li> | ||||
</ul> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Since rfc8536bis-02</name> | ||||
<ul spacing="normal"> | ||||
<li>Documented "-00" as meaning unspecified local time.</li> | ||||
<li>Recommended that "-00" be used for timestamps that | ||||
are unspecified due to TZif file truncation.</li> | ||||
</ul> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Since rfc8536bis-01</name> | ||||
<ul spacing="normal"> | ||||
<li>Converted source from xml2rfc v2 to v3.</li> | ||||
<li>Properly line-wrapped long TZ string values in examples | ||||
(with no added space).</li> | ||||
<li>No other substantive changes.</li> | ||||
</ul> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Since rfc8536bis-00</name> | ||||
<ul spacing="normal"> | ||||
<li>Added specification of the version 4 format and the | ||||
optional leap-second table truncation and expiration, | ||||
along with an example and relevant | ||||
interoperability considerations.</li> | ||||
<li>Specified column widths in example tables.</li> | ||||
<li>Noted that long TZ string values in examples are | ||||
line-wrapped for presentation purposes only.</li> | ||||
</ul> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Since RFC 8536</name> | ||||
<ul spacing="normal"> | ||||
<li>Applied erratum <xref target="Err6435" format="default"/>.</li> | ||||
<li>Addressed erratum <xref target="Err6426" format="default"/> | ||||
and several other errors in the examples.</li> | ||||
<li>Clarified the specification of an all-year daylight saving time | ||||
<xref target="permdst" format="default">TZ string</xref>, | ||||
and changed the example to use negative DST.</li> | ||||
<li>Added informational notes to | ||||
<xref target="v3example" format="default"/>.</li> | ||||
<li>Miscellaneous editorial changes.</li> | ||||
<li>Added text obsoleting | ||||
<xref target="RFC8536" format="default"/>.</li> | ||||
<li>Added <xref target="changes" format="default"> | ||||
Changes from RFC 8536</xref>.</li> | ||||
<li>Added Tim Parenti as a contributor.</li> | ||||
</ul> | ||||
</section> | ||||
</section> | ||||
<section numbered="false" toc="default"> | <section numbered="false" toc="default"> | |||
<name>Acknowledgments</name> | <name>Acknowledgments</name> | |||
<t>The authors would like to thank the following individuals for | <t>The authors thank the following individuals for | |||
contributing their ideas and support for writing this | contributing their ideas and support for writing this specification: | |||
specification: Michael Douglass, Ned Freed, Guy Harris, | <contact fullname="Michael Douglass"/>, <contact fullname="Ned Freed"/>, | |||
Eliot Lear, Alexey Melnikov, and Tim Parenti.</t> | <contact fullname="Guy Harris"/>, <contact fullname="Eliot Lear"/>, | |||
<contact fullname="Alexey Melnikov"/>, and <contact fullname="Tim | ||||
Parenti"/>.</t> | ||||
</section> | </section> | |||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 255 change blocks. | ||||
811 lines changed or deleted | 491 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |