rfc9636.original | rfc9636.txt | |||
---|---|---|---|---|
Internet Engineering Task Force (IETF) A.D. Olson | Internet Engineering Task Force (IETF) A. Olson | |||
Internet-Draft | Request for Comments: 9636 | |||
Obsoletes: 8536 (if approved) P. Eggert | Obsoletes: 8536 P. Eggert | |||
Intended status: Standards Track UCLA | Category: Standards Track UCLA | |||
Expires: 9 November 2024 K. Murchison | ISSN: 2070-1721 K. Murchison | |||
Fastmail | Fastmail | |||
8 May 2024 | November 2024 | |||
The Time Zone Information Format (TZif) | The Time Zone Information Format (TZif) | |||
draft-murchison-rfc8536bis-15 | ||||
Abstract | Abstract | |||
This document specifies the Time Zone Information Format (TZif) for | This document specifies the Time Zone Information Format (TZif) for | |||
representing and exchanging time zone information, independent of any | representing and exchanging time zone information, independent of any | |||
particular service or protocol. Two media types for this format are | particular service or protocol. Two media types for this format are | |||
also defined. | also defined. | |||
This document replaces and obsoletes RFC 8536. | This document replaces and obsoletes RFC 8536. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 9 November 2024. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9636. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2024 IETF Trust and the persons identified as the | Copyright (c) 2024 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
2. Conventions Used in This Document . . . . . . . . . . . . . . 3 | 2. Conventions Used in This Document | |||
3. The Time Zone Information Format (TZif) . . . . . . . . . . . 5 | 3. The Time Zone Information Format (TZif) | |||
3.1. TZif Header . . . . . . . . . . . . . . . . . . . . . . . 6 | 3.1. TZif Header | |||
3.2. TZif Data Block . . . . . . . . . . . . . . . . . . . . . 8 | 3.2. TZif Data Block | |||
3.3. TZif Footer . . . . . . . . . . . . . . . . . . . . . . . 12 | 3.3. TZif Footer | |||
3.3.1. All-Year Daylight Saving Time . . . . . . . . . . . . 13 | 3.3.1. All-Year Daylight Saving Time | |||
3.3.2. TZ String Extension . . . . . . . . . . . . . . . . . 14 | 3.3.2. TZ String Extension | |||
4. Interoperability Considerations . . . . . . . . . . . . . . . 14 | 4. Interoperability Considerations | |||
5. Internationalization Considerations . . . . . . . . . . . . . 16 | 5. Internationalization Considerations | |||
6. Use with the Time Zone Data Distribution Service . . . . . . 16 | 6. Use with the Time Zone Data Distribution Service | |||
6.1. Truncating TZif Files . . . . . . . . . . . . . . . . . . 17 | 6.1. Truncating TZif Files | |||
6.2. Example TZDIST Request for TZif Data . . . . . . . . . . 17 | 6.2. Example TZDIST Request for TZif Data | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | 7. Security Considerations | |||
8. Privacy Considerations . . . . . . . . . . . . . . . . . . . 19 | 8. Privacy Considerations | |||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 | 9. IANA Considerations | |||
9.1. application/tzif . . . . . . . . . . . . . . . . . . . . 20 | 9.1. application/tzif | |||
9.2. application/tzif-leap . . . . . . . . . . . . . . . . . . 21 | 9.2. application/tzif-leap | |||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 | 10. References | |||
10.1. Normative References . . . . . . . . . . . . . . . . . . 22 | 10.1. Normative References | |||
10.2. Informative References . . . . . . . . . . . . . . . . . 23 | 10.2. Informative References | |||
Appendix A. Common Interoperability Issues . . . . . . . . . . . 24 | Appendix A. Common Interoperability Issues | |||
Appendix B. Example TZif Files . . . . . . . . . . . . . . . . . 27 | Appendix B. Example TZif Files | |||
B.1. Version 1 File Representing UTC (with Leap Seconds) . . . 27 | B.1. Version 1 File Representing UTC (with Leap Seconds) | |||
B.2. Version 2 File Representing Pacific/Honolulu . . . . . . 33 | B.2. Version 2 File Representing Pacific/Honolulu | |||
B.3. Truncated Version 2 File Representing Pacific/Johnston . 40 | B.3. Truncated Version 2 File Representing Pacific/Johnston | |||
B.4. Truncated Version 3 File Representing Asia/Jerusalem . . 45 | B.4. Truncated Version 3 File Representing Asia/Jerusalem | |||
B.5. Truncated Version 4 File Representing Europe/London . . . 47 | B.5. Truncated Version 4 File Representing Europe/London | |||
Appendix C. Changes from RFC 8536 . . . . . . . . . . . . . . . 50 | Appendix C. Changes from RFC 8536 | |||
Appendix D. Change Log . . . . . . . . . . . . . . . . . . . . . 51 | Acknowledgments | |||
D.1. Since rfc8536bis-14 . . . . . . . . . . . . . . . . . . . 51 | Authors' Addresses | |||
D.2. Since rfc8536bis-13 . . . . . . . . . . . . . . . . . . . 51 | ||||
D.3. Since rfc8536bis-12 . . . . . . . . . . . . . . . . . . . 51 | ||||
D.4. Since rfc8536bis-11 . . . . . . . . . . . . . . . . . . . 52 | ||||
D.5. Since rfc8536bis-10 . . . . . . . . . . . . . . . . . . . 52 | ||||
D.6. Since rfc8536bis-09 . . . . . . . . . . . . . . . . . . . 52 | ||||
D.7. Since rfc8536bis-08 . . . . . . . . . . . . . . . . . . . 52 | ||||
D.8. Since rfc8536bis-07 . . . . . . . . . . . . . . . . . . . 52 | ||||
D.9. Since rfc8536bis-06 . . . . . . . . . . . . . . . . . . . 52 | ||||
D.10. Since rfc8536bis-05 . . . . . . . . . . . . . . . . . . . 53 | ||||
D.11. Since rfc8536bis-04 . . . . . . . . . . . . . . . . . . . 53 | ||||
D.12. Since rfc8536bis-03 . . . . . . . . . . . . . . . . . . . 53 | ||||
D.13. Since rfc8536bis-02 . . . . . . . . . . . . . . . . . . . 53 | ||||
D.14. Since rfc8536bis-01 . . . . . . . . . . . . . . . . . . . 53 | ||||
D.15. Since rfc8536bis-00 . . . . . . . . . . . . . . . . . . . 53 | ||||
D.16. Since RFC 8536 . . . . . . . . . . . . . . . . . . . . . 54 | ||||
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 54 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 54 | ||||
1. Introduction | 1. Introduction | |||
Time zone data typically consists of offsets from universal time | Time zone data typically consists of offsets from universal time | |||
(UT), daylight saving transition rules, one or more local time | (UT), daylight saving transition rules, one or more local time | |||
designations (acronyms or abbreviations), and optional leap-second | designations (acronyms or abbreviations), and optional leap-second | |||
adjustments. One such format for conveying this information is | adjustments. One such format for conveying this information is | |||
iCalendar [RFC5545]. It is a text-based format used by calendaring | iCalendar [RFC5545]. It is a text-based format used by calendaring | |||
and scheduling systems. | and scheduling systems. | |||
skipping to change at page 3, line 31 ¶ | skipping to change at line 104 ¶ | |||
Format (TZif). It is a binary format used by most UNIX systems to | Format (TZif). It is a binary format used by most UNIX systems to | |||
calculate local time. This format was introduced in the 1980s and | calculate local time. This format was introduced in the 1980s and | |||
has evolved since then into multiple upward-compatible versions. | has evolved since 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 [tz-link]. | generating and reading files in this format [tz-link]. | |||
This specification does not define the source of the data assembled | This specification does not define the source of the data assembled | |||
into a TZif file. One such source is the IANA-hosted time zone | into a TZif file. One such source is the IANA-hosted time zone | |||
database [RFC6557]. | database [RFC6557]. | |||
This document obsoletes RFC 8536, providing editorial improvements, | This document obsoletes [RFC8536], providing 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. Additionally, a new version of | the interchange format of [RFC8536]. Additionally, a new version of | |||
the format is defined. The changes from RFC 8536 are summarized in | the format is defined. The changes from [RFC8536] are summarized in | |||
Appendix C. | Appendix C. | |||
2. Conventions Used in This Document | 2. Conventions Used in This Document | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
skipping to change at page 4, line 21 ¶ | skipping to change at line 142 ¶ | |||
International Atomic Time (TAI): The time standard based on atomic | International Atomic Time (TAI): The time standard based on atomic | |||
clocks since 1972. It is equal to UTC but without leap-second | clocks since 1972. It is equal to UTC but without leap-second | |||
adjustments. | adjustments. | |||
Leap Second: A one-second adjustment to keep UTC close to mean solar | Leap Second: A one-second adjustment to keep UTC close to mean solar | |||
time at the prime meridian (see [ITU-R-TF.460]). Each inserted or | time at the prime meridian (see [ITU-R-TF.460]). Each inserted or | |||
deleted leap second occurs at the end of a UTC month, that is, a | deleted leap second occurs at the end of a UTC month, that is, a | |||
month using the Gregorian calendar and the UTC timescale. | month using the Gregorian calendar and the UTC timescale. | |||
Leap-Second Correction (LEAPCORR): The value of TAI - UTC - 10 for | Leap-Second Correction (LEAPCORR): The value of "TAI - UTC - 10" for | |||
timestamps after the first leap second, and zero for timestamps | timestamps after the first leap second, and zero for timestamps | |||
before that. The expression "TAI - UTC - 10" comes from the fact | before that. The expression "TAI - UTC - 10" comes from the fact | |||
that TAI - UTC was defined to be 10 just prior to the first leap | that TAI - UTC was defined to be 10 just prior to the first leap | |||
second in 1972, so clocks with leap seconds have a zero LEAPCORR | second in 1972, so clocks with leap seconds have a zero LEAPCORR | |||
before the first leap second. | before the first leap second. | |||
Local Time: Civil time for a particular location. Its offset from | Local Time: Civil time for a particular location. Its offset from | |||
universal time can depend on the date and time of day. | universal time can depend on the date and time of day. | |||
POSIX Epoch: 1970-01-01 00:00:00 UTC, the basis for absolute | POSIX Epoch: 1970-01-01 00:00:00 UTC, the basis for absolute | |||
timestamps in this document. | timestamps in this document. | |||
Standard Time: The time according to a location's law or practice, | Standard Time: The time according to a location's law or practice, | |||
unadjusted for Daylight Saving Time. | unadjusted for daylight saving time. | |||
Time Change: A change to civil timekeeping practice. It occurs when | Time Change: A change to civil timekeeping practice. It occurs when | |||
one or more of the following happen simultaneously: | one or more of the following happen simultaneously: | |||
1. a change in UT offset | 1. a change in UT offset | |||
2. a change in whether daylight saving time is in effect | 2. a change in whether daylight saving time is in effect | |||
3. a change in time zone abbreviation | 3. a change in time zone abbreviation | |||
skipping to change at page 5, line 4 ¶ | skipping to change at line 170 ¶ | |||
1. a change in UT offset | 1. a change in UT offset | |||
2. a change in whether daylight saving time is in effect | 2. a change in whether daylight saving time is in effect | |||
3. a change in time zone abbreviation | 3. a change in time zone abbreviation | |||
4. a leap second (i.e., a change in LEAPCORR) | 4. a leap second (i.e., a change in LEAPCORR) | |||
Time Zone Data: The Time Zone Data Distribution Service (TZDIST) | Time Zone Data: The Time Zone Data Distribution Service (TZDIST) | |||
[RFC7808] defines "Time zone data" as "data that defines a single | [RFC7808] defines "Time zone data" as "data that defines a single | |||
time zone, including an identifier, UTC offset values, DST rules, | time zone, including an identifier, UTC offset values, DST rules, | |||
and other information such as time zone abbreviations." The | and other information such as time zone abbreviations". The | |||
interchange format defined in this document is one such form of | interchange format defined in this document is one such form of | |||
time zone data. | time zone data. | |||
Transition Time: The moment of occurrence of a time change that is | Transition Time: The moment of occurrence of a time change that is | |||
not a leap second. It is identified with a signed integer count | not a leap second. It is identified with a signed integer count | |||
of UNIX leap time seconds since the POSIX epoch. | of UNIX leap time seconds since the POSIX epoch. | |||
Universal Time (UT): The basis of civil time. This is the principal | Universal Time (UT): The basis of civil time. This is the principal | |||
form of the mean solar time at the prime meridian (0 degrees | form of the mean solar time at the prime meridian (0 degrees | |||
longitude) for timestamps before UTC was introduced in 1960 and is | longitude) for timestamps before UTC was introduced in 1960 and is | |||
skipping to change at page 5, line 49 ¶ | skipping to change at line 214 ¶ | |||
time. | time. | |||
Wall Time: Another name for local time; short for "wall-clock time". | Wall Time: Another name for local time; short for "wall-clock time". | |||
3. The Time Zone Information Format (TZif) | 3. The Time Zone Information Format (TZif) | |||
The Time Zone Information Format begins with a fixed 44-octet version | The Time Zone Information Format begins with a fixed 44-octet version | |||
1 header (Section 3.1) containing a field that specifies the version | 1 header (Section 3.1) 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 | version N+1 files without too much trouble; data specific to version | |||
N+1 either appears after version N data so that earlier-version | N+1 either appears after version N data so that earlier version | |||
readers can easily ignore later-version data they are not designed | readers can easily ignore later version data they are not designed | |||
for, or it appears as a minor extension to version N that version N | for, or it appears as a minor extension to version N that version N | |||
readers are likely to tolerate well. | readers are likely to tolerate well. | |||
The version 1 header is followed by a variable-length version 1 data | The version 1 header is followed by a variable-length version 1 data | |||
block (Section 3.2) containing four-octet (32-bit) transition times | block (Section 3.2) containing four-octet (32-bit) transition times | |||
and leap-second occurrences. These 32-bit values are limited to | and leap-second occurrences. These 32-bit values are limited to | |||
representing time changes from 1901-12-13 20:45:52 through 2038-01-19 | representing 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 | 03:14:07 UT, and the version 1 header and data block are present only | |||
for backward compatibility with obsolescent readers, as discussed in | for backward compatibility with obsolescent readers, as discussed in | |||
Common Interoperability Issues (Appendix A). | "Common Interoperability Issues" (Appendix A). | |||
Version 1 files terminate after the version 1 data block. Files from | Version 1 files terminate after the version 1 data block. Files from | |||
versions 2 and higher extend the format by appending a second | 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 footer (Section 3.3). These | occurrences, and a variable-length footer (Section 3.3). These | |||
64-bit values can represent times approximately 292 billion years | 64-bit values can represent times approximately 292 billion years | |||
into the past or future. | into the past or future. | |||
NOTE: All multi-octet integer values MUST be stored in network octet | NOTE: All multi-octet integer values MUST be stored in network octet | |||
skipping to change at page 7, line 26 ¶ | skipping to change at line 287 ¶ | |||
The fields of the header are defined as follows: | The fields of the header are defined as follows: | |||
magic: The four-octet ASCII [RFC20] sequence "TZif" (0x54 0x5A 0x69 | magic: The four-octet ASCII [RFC20] sequence "TZif" (0x54 0x5A 0x69 | |||
0x66), which identifies the file as utilizing the Time Zone | 0x66), which identifies the file as utilizing the Time Zone | |||
Information Format. | Information Format. | |||
ver(sion): An octet identifying the version of the file's format. | ver(sion): An octet identifying the version of the file's format. | |||
The value MUST be one of the following: | The value MUST be one of the following: | |||
NUL (0x00) Version 1 - The file contains only the version 1 | * NUL (0x00) Version 1 - The file contains only the version 1 | |||
header and data block. Version 1 files MUST NOT contain a | header and data block. Version 1 files MUST NOT contain a | |||
version 2+ header, data block, or footer. | version 2+ header, data block, or footer. | |||
'2' (0x32) Version 2 - The file MUST contain the version 1 header | * '2' (0x32) Version 2 - The file MUST contain the version 1 | |||
and data block, a version 2+ header and data block, and a | header and data block, a version 2+ header and data block, and | |||
footer. The TZ string in the footer (Section 3.3), if | a footer. The TZ string in the footer (Section 3.3), if non- | |||
nonempty, MUST strictly adhere to the requirements for the TZ | empty, MUST strictly adhere to the requirements for the TZ | |||
environment variable as defined in Section 8.3 of the "Base | environment variable as defined in Section 8.3 of the "Base | |||
Definitions" volume of [POSIX] and MUST encode the POSIX | Definitions" volume of [POSIX] and MUST encode the POSIX | |||
portable character set as ASCII. The leap-second records MUST | portable character set as ASCII. The leap-second records MUST | |||
NOT be truncated at the start (Section 6.1), and MUST NOT | NOT be truncated at the start (Section 6.1) and MUST NOT | |||
contain an expiration time. | contain an expiration time. | |||
'3' (0x33) Version 3 - The file MUST conform to all version 2 | * '3' (0x33) Version 3 - The file MUST conform to all version 2 | |||
requirements, except that any TZ string in the footer | requirements, except that any TZ string in the footer | |||
(Section 3.3) MAY use the TZ string extension described below | (Section 3.3) MAY use the TZ string extension described below | |||
(Section 3.3.2). | (Section 3.3.2). | |||
'4' (0x34) Version 4 - The file MUST conform to all version 3 | * '4' (0x34) Version 4 - The file MUST conform to all version 3 | |||
requirements, except that the leap-second records MAY be | requirements, except that the leap-second records MAY be | |||
truncated at the start, and MAY contain an expiration time. | truncated at the start and MAY contain an expiration time. | |||
isutcnt: A four-octet unsigned integer specifying the number of UT/ | isutcnt: A four-octet unsigned integer specifying the number of UT/ | |||
local indicators contained in the data block -- MUST either be | local indicators contained in the data block -- MUST either be | |||
zero or equal to "typecnt". | zero or equal to "typecnt". | |||
isstdcnt: A four-octet unsigned integer specifying the number of | isstdcnt: A four-octet unsigned integer specifying the number of | |||
standard/wall indicators contained in the data block -- MUST | standard/wall indicators contained in the data block -- MUST | |||
either be zero or equal to "typecnt". | either be zero or equal to "typecnt". | |||
leapcnt: A four-octet unsigned integer specifying the number of | leapcnt: 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. | |||
timecnt: A four-octet unsigned integer specifying the number of | timecnt: A four-octet unsigned integer specifying the number of | |||
transition times contained in the data block. | transition times contained in the data block. | |||
typecnt: A four-octet unsigned integer specifying the number of | typecnt: A four-octet unsigned integer specifying the number of | |||
local time type records contained in the data block -- MUST NOT be | local time type records contained in the data block -- MUST NOT be | |||
zero. (Although local time type records convey no useful | zero. (Although local time type records convey no useful | |||
information in files that have nonempty TZ strings but no | information in files that have non-empty TZ strings but no | |||
transitions, at least one such record is nevertheless required | transitions, at least one such record is nevertheless required | |||
because many TZif readers reject files that have zero time types.) | because many TZif readers reject files that have zero time types.) | |||
charcnt: A four-octet unsigned integer specifying the total number | charcnt: A four-octet unsigned integer specifying the total number | |||
of octets used by the set of time zone designations contained in | of octets used by the set of time zone designations contained in | |||
the data block - MUST NOT be zero. The count includes the | the data block -- MUST NOT be zero. The count includes the | |||
trailing NUL (0x00) octet at the end of the last time zone | trailing NUL (0x00) octet at the end of the last time zone | |||
designation. | designation. | |||
Although the version 1 and 2+ headers have the same format, magic | Although the version 1 and 2+ headers have the same format, magic | |||
number, and version fields, their count fields may differ, because | number, and version fields, their count fields may differ, because | |||
the version 1 data can be a subset of the version 2+ data. | the version 1 data can be a subset of the version 2+ data. | |||
3.2. TZif Data Block | 3.2. TZif Data Block | |||
A TZif data block consists of seven variable-length elements, each of | A TZif data block consists of seven variable-length elements, each of | |||
skipping to change at page 9, line 29 ¶ | skipping to change at line 383 ¶ | |||
+---------------------------------------------------------+ | +---------------------------------------------------------+ | |||
Figure 3: TZif Data Block | Figure 3: TZif Data Block | |||
The elements of the data block are defined as follows: | The elements of the data block are defined as follows: | |||
transition times: A series of four- or eight-octet UNIX leap time | transition times: A series of four- or eight-octet UNIX leap time | |||
values sorted in strictly ascending order. Each value is used as | values sorted in strictly ascending order. Each value is used as | |||
a transition time at which the rules for computing local time may | a transition time at which the rules for computing local time may | |||
change. The number of time values is specified by the "timecnt" | change. The number of time values is specified by the "timecnt" | |||
field in the header. Each time value SHOULD be at least -2**59. | field in the header. Each time value SHOULD be at least -2^59. | |||
(-2**59 is the greatest negated power of 2 that predates the Big | (-2^59 is the greatest negated power of 2 that predates the Big | |||
Bang, and avoiding earlier timestamps works around known TZif | Bang, and avoiding earlier timestamps works around known TZif | |||
reader bugs relating to outlandishly negative timestamps.) | reader bugs relating to outlandishly negative timestamps.) | |||
transition types: A series of one-octet unsigned integers specifying | transition types: A series of one-octet unsigned integers specifying | |||
the type of local time of the corresponding transition time. | the type of local time of the corresponding transition time. | |||
These values serve as zero-based indices into the array of local | These values serve as zero-based indices into the array of local | |||
time type records. The number of type indices is specified by the | time type records. The number of type indices is specified by the | |||
"timecnt" field in the header. Each type index MUST be in the | "timecnt" field in the header. Each type index MUST be in the | |||
range [0, "typecnt" - 1]. | range [0, "typecnt" - 1]. | |||
skipping to change at page 10, line 5 ¶ | skipping to change at line 407 ¶ | |||
"typecnt" field in the header. Each record has the following | "typecnt" field in the header. Each record has the following | |||
format (the lengths of multi-octet fields are shown in | format (the lengths of multi-octet fields are shown in | |||
parentheses): | parentheses): | |||
+---------------+---+---+ | +---------------+---+---+ | |||
| utoff (4) |dst|idx| | | utoff (4) |dst|idx| | |||
+---------------+---+---+ | +---------------+---+---+ | |||
utoff: A four-octet signed integer specifying the number of | utoff: A four-octet signed integer specifying the number of | |||
seconds to be added to UT in order to determine local time. | seconds to be added to UT in order to determine local time. | |||
The value MUST NOT be -2**31 and SHOULD be in the range | The value MUST NOT be -2^31 and SHOULD be in the range [-89999, | |||
[-89999, 93599] (i.e., its value SHOULD be more than -25 hours | 93599] (i.e., its value SHOULD be more than -25 hours and less | |||
and less than 26 hours). Avoiding -2**31 allows 32-bit clients | than 26 hours). Avoiding -2^31 allows 32-bit clients to negate | |||
to negate the value without overflow. Restricting it to | the value without overflow. Restricting it to [-89999, 93599] | |||
[-89999, 93599] allows easy support by implementations that | allows easy support by implementations that already support the | |||
already support the POSIX-required range [-24:59:59, 25:59:59]. | POSIX-required range [-24:59:59, 25:59:59]. | |||
(is)dst: A one-octet value indicating whether local time should | (is)dst: A one-octet value indicating whether local time should | |||
be considered Daylight Saving Time (DST). The value MUST be 0 | be considered Daylight Saving Time (DST). The value MUST be 0 | |||
or 1. A value of one (1) indicates that this type of time is | or 1. A value of one (1) indicates that this type of time is | |||
DST. A value of zero (0) indicates that this time type is | DST. A value of zero (0) indicates that this time type is | |||
standard time. | standard time. | |||
(desig)idx: A one-octet unsigned integer specifying a zero-based | (desig)idx: A one-octet unsigned integer specifying a zero-based | |||
index into the series of time zone designation octets, thereby | index into the series of time zone designation octets, thereby | |||
selecting a particular designation string. Each index MUST be | selecting a particular designation string. Each index MUST be | |||
skipping to change at page 11, line 13 ¶ | skipping to change at line 459 ¶ | |||
+---------------+---------------+ | +---------------+---------------+ | |||
version 2+ Data Block: | version 2+ Data Block: | |||
+---------------+---------------+---------------+ | +---------------+---------------+---------------+ | |||
| occur (8) | corr (4) | | | occur (8) | corr (4) | | |||
+---------------+---------------+---------------+ | +---------------+---------------+---------------+ | |||
occur(rence): A four- or eight-octet UNIX leap time value | occur(rence): A four- or eight-octet UNIX leap time value | |||
specifying the time at which a leap-second correction occurs or | specifying the time at which a leap-second correction occurs or | |||
at which the leap-second table expires. The first value, if | at which the leap-second table expires. The first value, if | |||
present, MUST be nonnegative, and each leap second MUST occur | present, MUST be non-negative, and each leap second MUST occur | |||
at the end of a UTC month. | at the end of a UTC month. | |||
corr(ection): A four-octet signed integer specifying the value of | corr(ection): A four-octet signed integer specifying the value of | |||
LEAPCORR on or after the occurrence. If "leapcnt" is zero, | LEAPCORR on or after the occurrence. If "leapcnt" is zero, | |||
LEAPCORR is zero for all timestamps; otherwise, for timestamps | LEAPCORR is zero for all timestamps. If "leapcnt" is nonzero, | |||
before the first occurrence time, LEAPCORR is zero if the first | for timestamps before the first occurrence time, LEAPCORR is | |||
correction is one (1) or minus one (-1), and is unspecified | zero if the first correction is one (1) or minus one (-1) and | |||
otherwise (which can happen only in files truncated at the | is unspecified otherwise (which can happen only in files | |||
start (Section 6.1)). | truncated at the start (Section 6.1)). | |||
The first leap second is a positive leap second if and only if | The first leap second is a positive leap second if and only if | |||
its correction is positive. Each correction after the first | its correction is positive. Each correction after the first | |||
MUST differ from the previous correction by either one (1) for | MUST differ from the previous correction by either one (1) for | |||
a positive leap second or minus one (-1) for a negative leap | a positive leap second or minus one (-1) for a negative leap | |||
second, except that in version 4 files with two or more leap- | second, except that in version 4 files with two or more leap- | |||
second records, the correction value of the last two records | second records, the correction value of the last two records | |||
MAY be the same, with the occurrence of last record indicating | MAY be the same, with the occurrence of last record indicating | |||
the expiration time of the leap-second table. | the expiration time of the leap-second table. | |||
The leap-second table expiration time is the time at which the | The leap-second table expiration time is the time at which the | |||
table no longer records the presence or absence of future leap- | table no longer records the presence or absence of future leap- | |||
second corrections, and post-expiration timestamps can not be | second corrections, and post-expiration timestamps cannot be | |||
accurately calculated. For example, a leap-second table | accurately calculated. For example, a leap-second table | |||
published in January, which predicts the presence or absence of | published in January, which predicts the presence or absence of | |||
a leap second at June's end, might expire in mid-December | a leap second at June's end, might expire in mid-December | |||
because it is not known when the next leap second will occur. | because it is not known when the next leap second will occur. | |||
If leap seconds become permanently discontinued, as requested | If leap seconds become permanently discontinued, as requested | |||
by the General Conference on Weights and Measures | by the General Conference on Weights and Measures | |||
[CGPM-2022-R4], leap-second tables published after the | [CGPM-2022-R4], leap-second tables published after the | |||
discontinuation time SHOULD NOT expire, since they will not be | discontinuation time SHOULD NOT expire, since they will not be | |||
updated in the foreseeable future. | updated in the foreseeable future. | |||
skipping to change at page 12, line 25 ¶ | skipping to change at line 520 ¶ | |||
"isutcnt" field in the header. If "isutcnt" is zero (0), all | "isutcnt" field in the header. If "isutcnt" is zero (0), all | |||
transition times associated with local time types are assumed to | transition times associated with local time types are assumed to | |||
be specified as local time. | be specified as local time. | |||
The type corresponding to a transition time specifies local time for | The type corresponding to a transition time specifies local time for | |||
timestamps starting at the given transition time and continuing up | timestamps starting at the given transition time and continuing up | |||
to, but not including, the next transition time. Local time for | to, but not including, the next transition time. Local time for | |||
timestamps before the first transition is specified by the first time | timestamps before the first transition is specified by the first time | |||
type (time type 0). Local time for timestamps on or after the last | type (time type 0). Local time for timestamps on or after the last | |||
transition is specified by the TZ string in the footer (Section 3.3) | transition is specified by the TZ string in the footer (Section 3.3) | |||
if present and nonempty; otherwise, it is unspecified. If there are | if present and non-empty; otherwise, it is unspecified. If there are | |||
no transitions, local time for all timestamps is specified by the TZ | no transitions, local time for all timestamps is specified by the TZ | |||
string in the footer if present and nonempty; otherwise, it is | string in the footer if present and non-empty; otherwise, it is | |||
specified by time type 0. A time type with a designation string of | specified by time type 0. A time type with a designation string of | |||
"-00" represents an unspecified local time. | "-00" represents an unspecified local time. | |||
A given pair of standard/wall and UT/local indicators is used to | A given pair of standard/wall and UT/local indicators is used to | |||
designate whether the corresponding transition time was specified as | designate whether the corresponding transition time was specified as | |||
UT, standard time, or wall-clock time. There are only three | UT, standard time, or wall-clock time. There are only three | |||
combinations of the two indicators, given that the standard/wall | combinations of the two indicators, given that the standard/wall | |||
value MUST be one (1) if the UT/local value is one (1). This | value MUST be one (1) if the UT/local value is one (1). This | |||
information can be useful if the transition times in a TZif file need | information can be useful if the transition times in a TZif file need | |||
to be transformed into transitions appropriate for another time zone | to be transformed into transitions appropriate for another time zone | |||
(e.g. when calculating transition times for a simple POSIX-like TZ | (e.g., when calculating transition times for a simple POSIX-like TZ | |||
string such as "AKST9AKDT"). | string such as "AKST9AKDT"). | |||
In order to eliminate unused space in a TZif file, every nonzero | In order to eliminate unused space in a TZif file, every nonzero | |||
local time type index SHOULD appear at least once in the transition | local time type index SHOULD appear at least once in the transition | |||
type array. Likewise, every octet in the time zone designations | type array. Likewise, every octet in the time zone designations | |||
array SHOULD be used by at least one time type record. | array SHOULD be used by at least one time type record. | |||
3.3. TZif Footer | 3.3. TZif Footer | |||
The TZif footer is structured as follows (the lengths of multi-octet | The TZif footer is structured as follows (the lengths of multi-octet | |||
skipping to change at page 13, line 22 ¶ | skipping to change at line 563 ¶ | |||
NL: An ASCII new line character (0x0A). | NL: An ASCII new line character (0x0A). | |||
TZ string: A rule for computing local time changes after the last | TZ string: A rule for computing local time changes after the last | |||
transition time stored in the version 2+ data block. The string | transition time stored in the version 2+ data block. The string | |||
is either empty or uses the expanded format of the "TZ" | is either empty or uses the expanded format of the "TZ" | |||
environment variable as defined in Section 8.3 of the "Base | environment variable as defined in Section 8.3 of the "Base | |||
Definitions" volume of [POSIX] with ASCII encoding, possibly | Definitions" volume of [POSIX] with ASCII encoding, possibly | |||
utilizing the extension described below (Section 3.3.2) in version | utilizing the extension described below (Section 3.3.2) in version | |||
3 and higher files. If the string is empty, the corresponding | 3 and higher files. If the string is empty, the corresponding | |||
information is not available. If the string is nonempty and one | information is not available. If the string is non-empty and one | |||
or more transitions appear in the version 2+ data, the string MUST | or more transitions appear in the version 2+ data, the string MUST | |||
be consistent with the last version 2+ transition. In other | be consistent with the last version 2+ transition. In other | |||
words, evaluating the TZ string at the time of the last transition | words, evaluating the TZ string at the time of the last transition | |||
should yield the same time type as was specified in the last | should yield the same time type as was specified in the last | |||
transition. The string MUST NOT contain NUL octets or be | transition. The string MUST NOT contain NUL octets or be | |||
NUL-terminated, and it SHOULD NOT begin with the ':' (colon) | NUL-terminated, and it SHOULD NOT begin with the ":" (colon) | |||
character. | character. | |||
The TZif footer is present only in version 2 and higher files, as the | The TZif footer is present only in version 2 and higher files, as the | |||
obsolescent version 1 format was designed before the need for a | obsolescent version 1 format was designed before the need for a | |||
footer was apparent. | footer was apparent. | |||
3.3.1. All-Year Daylight Saving Time | 3.3.1. All-Year Daylight Saving Time | |||
DST is considered to be in effect all year if its UT offset is less | DST is considered to be in effect all year if its UT offset is less | |||
than (i.e., west of) that of standard time, and it starts January 1 | than (i.e., west of) that of standard time, and it starts January 1 | |||
at 00:00 and ends December 31 at 24:00 minus the difference between | at 00:00 and ends December 31 at 24:00 minus the difference between | |||
standard and daylight saving time, leaving no room for standard time | standard and daylight saving time, leaving no room for standard time | |||
in the calendar. [POSIX] implies, but does not explicitly state | in the calendar. [POSIX] implies but does not explicitly state this, | |||
this, so it is spelled out here for clarity. | so it is spelled out here for clarity. | |||
Example: XXX3EDT4,0/0,J365/23 | Example: XXX3EDT4,0/0,J365/23 | |||
This represents a time zone that is perpetually 4 hours west of UT | This represents a time zone that is perpetually 4 hours west of UT | |||
and is abbreviated "EDT". The "XXX" is ignored. | and is abbreviated "EDT". The "XXX" is ignored. | |||
3.3.2. TZ String Extension | 3.3.2. TZ String Extension | |||
The TZ string in a version 3 or higher TZif file MAY use the | The TZ string in a version 3 or higher TZif file MAY use the | |||
following extension to POSIX TZ strings. This extension is described | following extension to POSIX TZ strings. This extension is described | |||
using the terminology of Section 8.3 of the "Base Definitions" volume | using the terminology of Section 8.3 of the "Base Definitions" volume | |||
of [POSIX]. | of [POSIX]. | |||
* The hours part of the transition times may be signed and range | The hours part of the transition times may be signed and range from | |||
from -167 through 167 (-167 <= hh <= 167) instead of the POSIX- | -167 through 167 (-167 <= hh <= 167) instead of the POSIX-required | |||
required unsigned values from 0 through 24. | unsigned values from 0 through 24. | |||
Example: <-03>3<-02>,M3.5.0/-2,M10.5.0/-1 | Example: <-03>3<-02>,M3.5.0/-2,M10.5.0/-1 | |||
This represents a time zone that observes daylight saving time | 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 | 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 | the day before October's last Sunday. Standard time is 3 hours | |||
west of UT and is abbreviated "-03"; daylight saving time is 2 | west of UT and is abbreviated "-03"; daylight saving time is 2 | |||
hours west of UT and is abbreviated "-02". | hours west of UT and is abbreviated "-02". | |||
A TZif file that uses the above extension MUST be designated as | A TZif file that uses the above extension MUST be designated as | |||
version 3 (or higher), even if a future version of POSIX adopts this | version 3 (or higher), even if a future version of POSIX adopts this | |||
extension. | extension. | |||
4. Interoperability Considerations | 4. Interoperability Considerations | |||
The following practices help ensure the interoperability of TZif | The following practices help ensure the interoperability of TZif | |||
applications. | applications. | |||
skipping to change at page 15, line 8 ¶ | skipping to change at line 640 ¶ | |||
* To save space, writers of version 2+ files MAY output a | * To save space, writers of version 2+ files MAY output a | |||
placeholder version 1 data block with all counts zero except that | placeholder version 1 data block with all counts zero except that | |||
"typecnt" and "charcnt" are both one (1). If this is done, | "typecnt" and "charcnt" are both one (1). If this is done, | |||
obsolescent version-1-only readers MUST interpret these files as | obsolescent version-1-only readers MUST interpret these files as | |||
lacking time changes and time zone abbreviations. | lacking time changes and time zone abbreviations. | |||
* Unless the version 1 data block is a placeholder, the sequence of | * Unless the version 1 data block is a placeholder, the sequence of | |||
timestamps defined by the version 1 header and data block SHOULD | timestamps defined by the version 1 header and data block SHOULD | |||
be a contiguous sub-sequence of the timestamps defined by the | be a contiguous sub-sequence of the timestamps defined by the | |||
version 2+ header and data block, and by the footer. This | version 2+ header and data block and by the footer. This | |||
guideline helps obsolescent version 1 readers agree with current | guideline helps obsolescent version 1 readers agree with current | |||
readers about timestamps within the contiguous sub-sequence. | readers about timestamps within the contiguous sub-sequence. | |||
* When a TZif file contains a leap-second table expiration time, | * When a TZif file contains a leap-second table expiration time, | |||
TZif readers SHOULD either refuse to process post-expiration | TZif readers SHOULD either refuse to process post-expiration | |||
timestamps, or process them as if the expiration time did not | timestamps or process them as if the expiration time did not exist | |||
exist (possibly with an error indication). This lessens | (possibly with an error indication). This lessens disagreement | |||
disagreement among implementations when processing far-future | among implementations when processing far-future timestamps that | |||
timestamps that cannot yet be handled exactly. | cannot yet be handled exactly. | |||
* Time zone designations MUST consist of at least three (3) and no | * Time zone designations MUST consist of at least three (3) and no | |||
more than six (6) ASCII characters from the set of alphanumerics, | more than six (6) ASCII characters from the set of alphanumerics, | |||
'-', and '+'. This is compatible with POSIX requirements for time | "-", and "+". This is compatible with POSIX requirements for time | |||
zone abbreviations. | zone abbreviations. | |||
* A reader that encounters a time zone designation containing bytes | * A reader that encounters a time zone designation containing bytes | |||
other than ASCII alphanumerics, '-', and '+' SHOULD act if the | other than ASCII alphanumerics, "-", and "+" SHOULD act if the | |||
designation instead contained a signed numeric string derived from | designation instead contained a signed numeric string derived from | |||
the UT offset, for example, "-10" and "+0530" to indicate 10 hours | the UT offset, for example, "-10" and "+0530" to indicate 10 hours | |||
west and 5.5 hours east of Greenwich, respectively. | west and 5.5 hours east of Greenwich, respectively. | |||
* When reading a version 2 or higher file, readers SHOULD ignore the | * When reading a version 2 or higher file, readers SHOULD ignore the | |||
version 1 header and data block except for the purpose of skipping | version 1 header and data block except for the purpose of skipping | |||
over them. This improves compatibility among readers of | over them. This improves compatibility among readers of non- | |||
nonconforming files where version 2+ data is not upward compatible | conforming files where version 2+ data is not upward compatible | |||
with version 1. | with version 1. | |||
* Readers SHOULD calculate the total lengths of the headers and data | * Readers SHOULD calculate the total lengths of the headers and data | |||
blocks and check that they all fit within the actual file size, as | blocks and check that they all fit within the actual file size, as | |||
part of a validity check for the file. | part of a validity check for the file. | |||
* When a TZif file is used in a MIME message entity, it SHOULD be | * When a TZif file is used in a MIME message entity, it SHOULD be | |||
indicated by one of the following media types: | indicated by one of the following media types: | |||
- "application/tzif-leap" (Section 9.2) to indicate that leap- | - "application/tzif-leap" (Section 9.2) to indicate that leap- | |||
skipping to change at page 16, line 12 ¶ | skipping to change at line 691 ¶ | |||
records are not included in the TZif data; "leapcnt" in the | records are not included in the TZif data; "leapcnt" in the | |||
header(s) MUST be zero (0). | header(s) MUST be zero (0). | |||
* Common interoperability issues and possible workarounds are | * Common interoperability issues and possible workarounds are | |||
described in Appendix A. | described in Appendix A. | |||
5. Internationalization Considerations | 5. Internationalization Considerations | |||
TZif time zone designations contain only ASCII alphanumerics, "-", | TZif time zone designations contain only ASCII alphanumerics, "-", | |||
and "+". Commonly used designations include numeric strings like | and "+". Commonly used designations include numeric strings like | |||
"-10" and "+0530" for UT offsets, and English-language abbreviations | "-10" and "+0530" for UT offsets and English language abbreviations | |||
like "CEST" for Central European Summer Time and "GMT" for Greenwich | like "CEST" for Central European Summer Time and "GMT" for Greenwich | |||
Mean Time. It is the TZif reader's responsibility to substitute | Mean Time. It is the TZif reader's responsibility to substitute | |||
different abbreviations when needed for internationalization, such as | different abbreviations when needed for internationalization, such as | |||
substituting "HNC" (l'heure normale du Centre) for "CST" (Central | substituting "HNC" (l'heure normale du Centre) for "CST" (Central | |||
Standard Time) in French-speaking regions. This substitution can be | Standard Time) in French-speaking regions. This substitution can be | |||
problematic, as abbreviations can be ambiguous: for example, "CST" | problematic, as abbreviations can be ambiguous; for example, "CST" | |||
commonly stands for China Standard Time and Cuba Standard Time as | commonly stands for China Standard Time and Cuba Standard Time as | |||
well as Central Standard Time. One approach for addressing this | well as Central Standard Time. One approach for addressing this | |||
issue can be found in the timezone charts of the Unicode Common | issue can be found in the time zone charts of the Unicode Common | |||
Locale Data Repository (CLDR) Project. [CLDR] | Locale Data Repository (CLDR) Project [CLDR]. | |||
Although the original TZif design allowed for any nonzero octets in | Although the original TZif design allowed for any nonzero octets in | |||
time zone designations and it was common practice until the mid-1990s | time zone designations, and it was common practice until the mid- | |||
for designations to contain ASCII spaces, designations are now | 1990s for designations to contain ASCII spaces, designations are now | |||
limited to ASCII alphanumerics, "-", and "+" to avoid confusion and | limited to ASCII alphanumerics, "-", and "+" to avoid confusion and | |||
to encourage portability to a wide variety of locales. | to encourage portability to a wide variety of locales. | |||
6. Use with the Time Zone Data Distribution Service | 6. Use with the Time Zone Data Distribution Service | |||
The Time Zone Data Distribution Service (TZDIST) [RFC7808] is a | The Time Zone Data Distribution Service (TZDIST) [RFC7808] is a | |||
service that allows reliable, secure, and fast delivery of time zone | service that allows reliable, secure, and fast delivery of time zone | |||
data and leap-second rules to client systems such as calendaring and | data and leap-second rules to client systems such as calendaring and | |||
scheduling applications or operating systems. | scheduling applications or operating systems. | |||
A TZDIST service MAY supply time zone data to clients in the Time | A TZDIST service MAY supply time zone data to clients in the Time | |||
Zone Information Format. Such a service MUST indicate that it | Zone Information Format. Such a service MUST indicate that it | |||
supports this format by including the media type "application/tzif" | supports this format by including the media type "application/tzif" | |||
(Section 9.1) in its "capabilities" response (Section 5.1 of | (Section 9.1) in its "capabilities" response (Section 5.1 of | |||
[RFC7808]). A TZDIST service MAY also include the media type | [RFC7808]). A TZDIST service MAY also include the media type | |||
"application/tzif-leap" (Section 9.2) in its "capabilities" response | "application/tzif-leap" (Section 9.2) in its "capabilities" response | |||
if it is able to generate TZif files containing leap-second records. | if it is able to generate TZif files containing leap-second records. | |||
A TZDIST service MUST NOT advertise the "application/tzif-leap" media | A TZDIST service MUST NOT advertise the "application/tzif-leap" media | |||
type without also advertising "application/tzif". | type without also advertising "application/tzif". | |||
TZDIST clients MUST use the HTTP "Accept" header field [RFC9110], | TZDIST clients MUST use the HTTP "Accept" header field ([RFC9110], | |||
Section 12.5.1 to indicate their preference to receive data in the | Section 12.5.1) to indicate their preference to receive data in the | |||
"application/tzif" and/or "application/tzif-leap" formats. | "application/tzif" and/or "application/tzif-leap" formats. | |||
6.1. Truncating TZif Files | 6.1. Truncating TZif Files | |||
As described in Section 3.9 of [RFC7808], a TZDIST service MAY | As described in Section 3.9 of [RFC7808], a TZDIST service MAY | |||
truncate time zone transition data. A truncated TZif file is valid | truncate time zone transition data. A truncated TZif file is valid | |||
from its first and up to, but not including, its last version 2+ | from its first and up to, but not including, its last version 2+ | |||
transition time, if present. | transition time, if present. | |||
When truncating the start of a TZif file, the service MUST supply in | When truncating the start of a TZif file, the service MUST supply in | |||
skipping to change at page 17, line 25 ¶ | skipping to change at line 750 ¶ | |||
indicates local time immediately before the start point, and the time | indicates local time immediately before the start point, and the time | |||
type of the first transition indicates local time thereafter. Time | type of the first transition indicates local time thereafter. Time | |||
type 0 MUST be a placeholder indicating that local time is | type 0 MUST be a placeholder indicating that local time is | |||
unspecified, so that the reader is unambiguously informed of | unspecified, so that the reader is unambiguously informed of | |||
truncation at the start. | truncation at the start. | |||
When truncating the start of a TZif file containing leap-second | When truncating the start of a TZif file containing leap-second | |||
records, the service MUST keep all leap-second records governing | records, the service MUST keep all leap-second records governing | |||
timestamps within the truncation range, even if the first such record | timestamps within the truncation range, even if the first such record | |||
precedes the start point of the truncation range. If the truncated | precedes the start point of the truncation range. If the truncated | |||
leap-second table is nonempty, its first record MUST have a positive | leap-second table is non-empty, its first record MUST have a positive | |||
correction if and only if it represents a positive leap second. | correction if and only if it represents a positive leap second. | |||
When truncating the end of a TZif file, the service MUST supply in | When truncating the end of a TZif file, the service MUST supply in | |||
the version 2+ data a last transition time that is the end point of | the version 2+ data a last transition time that is the end point of | |||
the truncation range and MUST supply an empty TZ string. As with | the truncation range and MUST supply an empty TZ string. As with | |||
untruncated TZif files with empty TZ strings, a truncated TZif file | untruncated TZif files with empty TZ strings, a truncated TZif file | |||
does not indicate local time after the last transition. To this end, | does not indicate local time after the last transition. To this end, | |||
the time type of the last transition MUST be a placeholder indicating | the time type of the last transition MUST be a placeholder indicating | |||
that local time is unspecified. | that local time is unspecified. | |||
skipping to change at page 19, line 43 ¶ | skipping to change at line 859 ¶ | |||
As discussed in Section 9 of [RFC7808], transmission of time zone | As discussed in Section 9 of [RFC7808], transmission of time zone | |||
data over an insecure communications channel could leak the past, | data over an insecure communications channel could leak the past, | |||
current, or future location of a device or user. As such, TZif data | current, or future location of a device or user. As such, TZif data | |||
transmitted over a public communications channel MUST be protected | transmitted over a public communications channel MUST be protected | |||
with a confidentiality layer such as that provided by Transport Layer | with a confidentiality layer such as that provided by Transport Layer | |||
Security (TLS) [RFC8446]. | Security (TLS) [RFC8446]. | |||
9. IANA Considerations | 9. IANA Considerations | |||
The IANA is requested to update the Media Types Registry | IANA has updated the "Media Types" registry | |||
(https://www.iana.org/assignments/media-types/media-types.xhtml) as | (https://www.iana.org/assignments/media-types) as follows. | |||
follows: | ||||
This document defines two media types [RFC6838] for the exchange of | This document defines two media types [RFC6838] for the exchange of | |||
data utilizing the Time Zone Information Format. | data utilizing the Time Zone Information Format. | |||
9.1. application/tzif | 9.1. application/tzif | |||
Type name: | Type name: application | |||
application | ||||
Subtype name: | Subtype name: tzif | |||
tzif | ||||
Required parameters: | Required parameters: N/A | |||
N/A | ||||
Optional parameters: | Optional parameters: N/A | |||
N/A | ||||
Encoding considerations: | Encoding considerations: binary | |||
binary | ||||
Security considerations: | Security considerations: See Section 7 of RFC 9636. | |||
See Section 7 of This Document. | ||||
Interoperability considerations: | Interoperability considerations: See Section 4 of RFC 9636. | |||
See Section 4 of This Document. | ||||
Published specification: | Published specification: RFC 9636. | |||
This specification. | ||||
Applications that use this media type: | Applications that use this media type: This media type is designed | |||
This media type is designed for widespread use by applications | for widespread use by applications that need to use or exchange | |||
that need to use or exchange time zone information relative to | time zone information relative to UNIX time, such as the Time Zone | |||
UNIX Time, such as the Time Zone Information Compiler (zic) [ZIC] | Information Compiler (zic) [ZIC] and the GNU C Library [GNU-C]. | |||
and the GNU C Library [GNU-C]. The Time Zone Distribution Service | The Time Zone Distribution Service [RFC7808] can directly use this | |||
[RFC7808] can directly use this media type. | media type. | |||
Fragment identifier considerations: | Fragment identifier considerations: N/A | |||
N/A | ||||
Additional information: | Additional information: | |||
Magic number(s): The first 4 octets are 0x54, 0x5A, 0x69, 0x66 | ||||
Magic number(s): The first 4 octets are 0x54, 0x5A, 0x69, 0x66 | ||||
File extensions(s): N/A | File extensions(s): N/A | |||
Macintosh file type code(s): N/A | Macintosh file type code(s): N/A | |||
Person & email address to contact for further information: | Person & email address to contact for further information: Time Zone | |||
Time Zone Database mailing list <tz@iana.org> | Database mailing list <tz@iana.org> | |||
Intended usage: | Intended usage: COMMON | |||
COMMON | ||||
Restrictions on usage: | Restrictions on usage: N/A | |||
N/A | ||||
Author: | Author: See the "Authors' Addresses" section of RFC 9636. | |||
See the "Authors' Addresses" section of This Document. | ||||
Change controller: | Change controller: IETF | |||
IETF | ||||
9.2. application/tzif-leap | 9.2. application/tzif-leap | |||
Type name: | Type name: application | |||
application | ||||
Subtype name: | Subtype name: tzif-leap | |||
tzif-leap | ||||
Required parameters: | Required parameters: none | |||
none | ||||
Optional parameters: | Optional parameters: none | |||
none | ||||
Encoding considerations: | Encoding considerations: binary | |||
binary | ||||
Security considerations: | Security considerations: See Section 7 of RFC 9636. | |||
See Section 7 of This Document. | ||||
Interoperability considerations: | Interoperability considerations: See Section 4 of RFC 9636. | |||
See Section 4 of This Document. | ||||
Published specification: | Published specification: RFC 9636. | |||
This specification. | ||||
Applications that use this media type: | Applications that use this media type: This media type is designed | |||
This media type is designed for widespread use by applications | for widespread use by applications that need to use or exchange | |||
that need to use or exchange time zone information relative to | time zone information relative to UNIX leap time, such as the Time | |||
UNIX Leap Time, such as the Time Zone Information Compiler (zic) | Zone Information Compiler (zic) [ZIC] and the GNU C Library | |||
[ZIC] and the GNU C Library [GNU-C]. The Time Zone Distribution | [GNU-C]. The Time Zone Distribution Service [RFC7808] can | |||
Service [RFC7808] can directly use this media type. | directly use this media type. | |||
Fragment identifier considerations: | Fragment identifier considerations: N/A | |||
N/A | ||||
Additional information: | Additional information: | |||
Magic number(s): The first 4 octets are 0x54, 0x5A, 0x69, 0x66 | Magic number(s): The first 4 octets are 0x54, 0x5A, 0x69, 0x66 | |||
File extensions(s): N/A | File extensions(s): N/A | |||
Macintosh file type code(s): N/A | Macintosh file type code(s): N/A | |||
Person & email address to contact for further information: | Person & email address to contact for further information: Time Zone | |||
Time Zone Database mailing list <tz@iana.org> | Database mailing list <tz@iana.org> | |||
Intended usage: | Intended usage: COMMON | |||
COMMON | ||||
Restrictions on usage: | Restrictions on usage: N/A | |||
N/A | ||||
Author: | Author: See the "Authors' Addresses" section of RFC 9636. | |||
See the "Authors' Addresses" section of This Document. | ||||
Change controller: | Change controller: IETF | |||
IETF | ||||
10. References | 10. References | |||
10.1. Normative References | 10.1. Normative References | |||
[GNU-C] "The GNU C Library (glibc)", | [GNU-C] Free Software Foundation, "The GNU C Library", | |||
<https://www.gnu.org/software/libc/>. | <https://www.gnu.org/software/libc/>. | |||
[ITU-R-TF.460] | [ITU-R-TF.460] | |||
International Telecommunications Union, "Standard- | International Telecommunication Union, "Standard-frequency | |||
frequency and time-signal emissions", ITU-R Recommendation | and time-signal emissions", ITU-R Recommendation TF.460, | |||
TF.460, February 2002, | February 2002, <https://www.itu.int/rec/R-REC-TF.460/en>. | |||
<https://www.itu.int/rec/R-REC-TF.460/en>. | ||||
[POSIX] IEEE, "Standard for Information Technology--Portable | [POSIX] IEEE, "IEEE Standard for Information Technology--Portable | |||
Operating System Interface (POSIX(R)) Base Specifications, | Operating System Interface (POSIX(TM)) Base | |||
Issue 7", IEEE 1003.1-2017, | Specifications, Issue 7", POSIX.1-2017, IEEE | |||
DOI 10.1109/IEEESTD.2018.8277153, 31 January 2018, | Std 1003.1-2017, DOI 10.1109/IEEESTD.2018.8277153, January | |||
<https://pubs.opengroup.org/onlinepubs/9699919799/>. | 2018, <https://pubs.opengroup.org/onlinepubs/9699919799/>. | |||
[RFC20] Cerf, V., "ASCII format for network interchange", STD 80, | [RFC20] Cerf, V., "ASCII format for network interchange", STD 80, | |||
RFC 20, DOI 10.17487/RFC0020, October 1969, | RFC 20, DOI 10.17487/RFC0020, October 1969, | |||
<https://www.rfc-editor.org/info/rfc20>. | <https://www.rfc-editor.org/info/rfc20>. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
skipping to change at page 23, line 23 ¶ | skipping to change at line 998 ¶ | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
[RFC9110] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | [RFC9110] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | |||
Ed., "HTTP Semantics", STD 97, RFC 9110, | Ed., "HTTP Semantics", STD 97, RFC 9110, | |||
DOI 10.17487/RFC9110, June 2022, | DOI 10.17487/RFC9110, June 2022, | |||
<https://www.rfc-editor.org/info/rfc9110>. | <https://www.rfc-editor.org/info/rfc9110>. | |||
[ZIC] Kerrisk, M., "ZIC(8)", | [ZIC] Kerrisk, M., "zic(8) - Linux manual page", | |||
<http://man7.org/linux/man-pages/man8/zic.8.html>. | <http://man7.org/linux/man-pages/man8/zic.8.html>. | |||
10.2. Informative References | 10.2. Informative References | |||
[CGPM-2022-R4] | [CGPM-2022-R4] | |||
General Conference on Weights and Measures, "Resolution 4 | General Conference on Weights and Measures, "Resolution 4 | |||
of the 27th CGPM (2022)", November 2022, | of the 27th CGPM (2022)", DOI 10.59161/CGPM2022RES4E, | |||
November 2022, | ||||
<https://www.bipm.org/en/cgpm-2022/resolution-4>. | <https://www.bipm.org/en/cgpm-2022/resolution-4>. | |||
[CLDR] Unicode, Inc., "Unicode CLDR Project", 2024, | [CLDR] Unicode, Inc., "Unicode CLDR Project", | |||
<https://cldr.unicode.org/>. | <https://cldr.unicode.org/>. | |||
[EGGERT-TZ] | [EGGERT-TZ] | |||
"History for tz", | "History for tz", commit b5318b5, June 2024, | |||
<https://github.com/eggert/tz/commits/main/tzfile.5>. | <https://github.com/eggert/tz/commits/main/tzfile.5>. | |||
[Err6426] RFC Errata, "Erratum ID 6426", RFC 8536, | [Err6426] RFC Errata, "Erratum ID 6426", RFC 8536, | |||
<https://www.rfc-editor.org/errata/eid6426>. | <https://www.rfc-editor.org/errata/eid6426>. | |||
[Err6435] RFC Errata, "Erratum ID 6435", RFC 8536, | [Err6435] RFC Errata, "Erratum ID 6435", RFC 8536, | |||
<https://www.rfc-editor.org/errata/eid6435>. | <https://www.rfc-editor.org/errata/eid6435>. | |||
[Err6757] RFC Errata, "Erratum ID 6757", RFC 8536, | [Err6757] RFC Errata, "Erratum ID 6757", RFC 8536, | |||
<https://www.rfc-editor.org/errata/eid6757>. | <https://www.rfc-editor.org/errata/eid6757>. | |||
[Err7681] RFC Errata, "Erratum ID 7681", RFC 8536, | ||||
<https://www.rfc-editor.org/errata/eid7681>. | ||||
[RFC5545] Desruisseaux, B., Ed., "Internet Calendaring and | [RFC5545] Desruisseaux, B., Ed., "Internet Calendaring and | |||
Scheduling Core Object Specification (iCalendar)", | Scheduling Core Object Specification (iCalendar)", | |||
RFC 5545, DOI 10.17487/RFC5545, September 2009, | RFC 5545, DOI 10.17487/RFC5545, September 2009, | |||
<https://www.rfc-editor.org/info/rfc5545>. | <https://www.rfc-editor.org/info/rfc5545>. | |||
[RFC6557] Lear, E. and P. Eggert, "Procedures for Maintaining the | [RFC6557] Lear, E. and P. Eggert, "Procedures for Maintaining the | |||
Time Zone Database", BCP 175, RFC 6557, | Time Zone Database", BCP 175, RFC 6557, | |||
DOI 10.17487/RFC6557, February 2012, | DOI 10.17487/RFC6557, February 2012, | |||
<https://www.rfc-editor.org/info/rfc6557>. | <https://www.rfc-editor.org/info/rfc6557>. | |||
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | |||
<https://www.rfc-editor.org/info/rfc8446>. | <https://www.rfc-editor.org/info/rfc8446>. | |||
[RFC8536] Olson, A., Eggert, P., and K. Murchison, "The Time Zone | [RFC8536] Olson, A., Eggert, P., and K. Murchison, "The Time Zone | |||
Information Format (TZif)", RFC 8536, | Information Format (TZif)", RFC 8536, | |||
DOI 10.17487/RFC8536, February 2019, | DOI 10.17487/RFC8536, February 2019, | |||
<https://www.rfc-editor.org/info/rfc8536>. | <https://www.rfc-editor.org/info/rfc8536>. | |||
[tz-link] Eggert, P. and A.D. Olson, "Time zone and daylight saving | [tz-link] Eggert, P. and A. Olson, "Time zone and daylight saving | |||
time data", | time data", | |||
<https://www.iana.org/time-zones/repository/tz-link.html>. | <https://www.iana.org/time-zones/repository/tz-link.html>. | |||
Appendix A. Common Interoperability Issues | Appendix A. Common Interoperability Issues | |||
This section documents common problems in implementing this | This section documents common problems in implementing this | |||
specification. Most of these are problems in generating TZif files | specification. Most of these are problems in generating TZif files | |||
for use by readers conforming to predecessors of this specification | for use by readers conforming to predecessors of this specification | |||
[EGGERT-TZ]. The goals of this section are: | [EGGERT-TZ]. The goals of this section are to help: | |||
1. to help TZif writers output files that avoid common pitfalls in | 1. TZif writers output files that avoid common pitfalls in older or | |||
older or buggy TZif readers, | buggy TZif readers, | |||
2. to help TZif readers avoid common pitfalls when reading files | 2. TZif readers avoid common pitfalls when reading files generated | |||
generated by future TZif writers, and | by future TZif writers, and | |||
3. to help any future specification authors see what sort of | 3. any future specification authors see what sort of problems arise | |||
problems arise when the TZif format is changed. | when the TZif format is changed. | |||
When new versions of the TZif format have been defined, a design goal | When new versions of the TZif format have been defined, a design goal | |||
has been that a reader can successfully use a TZif file even if the | has been that a reader can successfully use a TZif file even if the | |||
file is of a later TZif version than what the reader was designed | file is of a later TZif version than what the reader was designed | |||
for. When complete compatibility was not achieved, an attempt was | for. When complete compatibility was not achieved, an attempt was | |||
made to limit glitches to rarely used timestamps and allow simple | made to limit glitches to rarely used timestamps and allow simple | |||
partial workarounds in writers designed to generate new-version data | partial workarounds in writers designed to generate newer-version | |||
useful even for older-version readers. This section attempts to | data useful even for older-version readers. This section attempts to | |||
document these compatibility issues and workarounds, as well as | document these compatibility issues and workarounds as well as other | |||
documenting other common bugs in readers. | common bugs in readers. | |||
Interoperability problems with TZif include the following: | Interoperability problems with TZif include the following: | |||
* Some readers examine only version 1 data. As a partial | * Some readers examine only version 1 data. As a partial | |||
workaround, a writer can output as much version 1 data as | workaround, a writer can output as much version 1 data as | |||
possible. However, a reader should ignore version 1 data and use | possible. However, a reader should ignore version 1 data and use | |||
version 2+ data, even if the reader's timestamps have only 32 | version 2+ data, even if the reader's timestamps have only 32 | |||
bits. | bits. | |||
* Some readers designed for version 2 might mishandle timestamps | * Some readers designed for version 2 might mishandle timestamps | |||
skipping to change at page 25, line 25 ¶ | skipping to change at line 1099 ¶ | |||
necessary, so that only far-future timestamps are mishandled by | necessary, so that only far-future timestamps are mishandled by | |||
version 2 readers. | version 2 readers. | |||
* Some readers designed for version 2 do not support permanent | * Some readers designed for version 2 do not support permanent | |||
daylight saving time with transitions after 24:00 -- e.g., a TZ | daylight saving time with transitions after 24:00 -- e.g., a TZ | |||
string "EST5EDT,0/0,J365/25" denoting permanent Eastern Daylight | string "EST5EDT,0/0,J365/25" denoting permanent Eastern Daylight | |||
Time (-04). As a workaround, a writer can substitute standard | Time (-04). As a workaround, a writer can substitute standard | |||
time for two time zones east, e.g., "XXX3EDT4,0/0,J365/23" for a | time for two time zones east, e.g., "XXX3EDT4,0/0,J365/23" for a | |||
time zone with a never-used standard time (XXX, -03) and negative | time zone with a never-used standard time (XXX, -03) and negative | |||
daylight saving time (EDT, -04) all year. Alternatively, as a | daylight saving time (EDT, -04) all year. Alternatively, as a | |||
partial workaround a writer can substitute standard time for the | partial workaround, a writer can substitute standard time for the | |||
next time zone east -- e.g., "AST4" for permanent Atlantic | next time zone east -- e.g., "AST4" for permanent Atlantic | |||
Standard Time (-04). | Standard Time (-04). | |||
* Some readers designed for version 2 or 3, and that require strict | * 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 [RFC8536] reject version 4 files whose leap-second | |||
tables are truncated at the start or that end in expiration times. | tables are truncated at the start or end in expiration times. | |||
* Some readers ignore the footer and instead predict future | * Some readers ignore the footer and instead predict future | |||
timestamps from the time type of the last transition. As a | timestamps from the time type of the last transition. As a | |||
partial workaround, a writer can output more transitions than | partial workaround, a writer can output more transitions than | |||
necessary. | necessary. | |||
* Some readers do not use time type 0 for timestamps before the | * Some readers do not use time type 0 for timestamps before the | |||
first transition, in that they infer a time type using a heuristic | first transition, in that they infer a time type using a heuristic | |||
that does not always select time type 0. As a partial workaround, | that does not always select time type 0. As a partial workaround, | |||
a writer can output a placeholder (no-op) first transition at an | a writer can output a placeholder (no-op) first transition at an | |||
early time. | early time. | |||
* Some readers mishandle timestamps before the first transition that | * Some readers mishandle timestamps before the first transition that | |||
has a timestamp not less than -2**31. Readers that support only | has a timestamp that is not less than -2^31. Readers that support | |||
32-bit timestamps are likely to be more prone to this problem, for | only 32-bit timestamps are likely to be more prone to this | |||
example, when they process 64-bit transitions, only some of which | problem, for example, when they process 64-bit transitions, only | |||
are representable in 32 bits. As a partial workaround, a writer | some of which are representable in 32 bits. As a partial | |||
can output a placeholder transition at timestamp -2**31. | workaround, a writer can output a placeholder transition at | |||
timestamp -2^31. | ||||
* Some readers mishandle a transition if its timestamp has the | * Some readers mishandle a transition if its timestamp has the | |||
minimum possible signed 64-bit value. Timestamps less than -2**59 | minimum possible signed 64-bit value. Timestamps less than -2^59 | |||
are not recommended. | are not recommended. | |||
* Some readers mishandle POSIX-style TZ strings that contain "<" or | * Some readers mishandle POSIX-style TZ strings that contain "<" or | |||
">". As a partial workaround, a writer can avoid using '<' or '>' | ">". As a partial workaround, a writer can avoid using "<" or ">" | |||
for time zone abbreviations containing only alphabetic characters. | for time zone abbreviations containing only alphabetic characters. | |||
* Many readers mishandle time zone abbreviations that contain non- | * Many readers mishandle time zone abbreviations that contain non- | |||
ASCII characters. These characters are not recommended. | ASCII characters. These characters are not recommended. | |||
* Some readers may mishandle time zone abbreviations that contain | * Some readers may mishandle time zone abbreviations that contain | |||
fewer than 3 or more than 6 characters, or that contain ASCII | fewer than 3 or more than 6 characters or that contain ASCII | |||
characters other than alphanumerics, '-', and '+'. These | characters other than alphanumerics, "-", and "+". These | |||
abbreviations are not recommended. | abbreviations are not recommended. | |||
* This specification does not dictate how readers should deal with | * This specification does not dictate how readers should deal with | |||
timestamps when local time is unspecified. Common practice is for | timestamps when local time is unspecified. Common practice is for | |||
readers to report UT with designation string "-00". A reader | readers to report UT with designation string "-00". A reader | |||
could return an error indication instead. | could return an error indication instead. | |||
* Some readers mishandle TZif files that specify daylight saving | * Some readers mishandle TZif files that specify daylight saving | |||
time UT offsets that are less than the UT offsets for the | time UT offsets that are less than the UT offsets for the | |||
corresponding standard time. These readers do not support | corresponding standard time. These readers do not support | |||
skipping to change at page 26, line 40 ¶ | skipping to change at line 1161 ¶ | |||
string "IST-1GMT0,M10.5.0,M3.5.0/1", observing standard time (IST, | string "IST-1GMT0,M10.5.0,M3.5.0/1", observing standard time (IST, | |||
+01) in summer and daylight saving time (GMT, +00) in winter. As | +01) in summer and daylight saving time (GMT, +00) in winter. As | |||
a partial workaround, a writer can output data for the equivalent | a partial workaround, a writer can output data for the equivalent | |||
of the POSIX TZ string "GMT0IST,M3.5.0/1,M10.5.0", thus swapping | of the POSIX TZ string "GMT0IST,M3.5.0/1,M10.5.0", thus swapping | |||
standard and daylight saving time. Although this workaround | standard and daylight saving time. Although this workaround | |||
misidentifies which part of the year uses daylight saving time, it | misidentifies which part of the year uses daylight saving time, it | |||
records UT offsets and time zone abbreviations correctly. | records UT offsets and time zone abbreviations correctly. | |||
* Some readers generate ambiguous timestamps for positive leap | * Some readers generate ambiguous timestamps for positive leap | |||
seconds that occur when the UTC offset is not a multiple of 60 | seconds that occur when the UTC offset is not a multiple of 60 | |||
seconds. For example, in a timezone with UTC offset +01:23:45 and | seconds. For example, with UTC offset +01:23:45 and a positive | |||
with a positive leap second 78796801 (1972-06-30 23:59:60 UTC), | leap second 78796801 (1972-06-30 23:59:60 UTC), some readers will | |||
some readers will map both 78796800 and 78796801 to 01:23:45 local | map both 78796800 and 78796801 to 01:23:45 local time the next day | |||
time the next day instead of mapping the latter to 01:23:46, and | instead of mapping the latter to 01:23:46, and they will map | |||
they will map 78796815 to 01:23:59 instead of to 01:23:60. This | 78796815 to 01:23:59 instead of to 01:23:60. This has not yet | |||
has not yet been a practical problem, since no civil authority has | been a practical problem, since no civil authority has observed | |||
observed such UTC offsets since leap seconds were introduced in | such UTC offsets since leap seconds were introduced in 1972. | |||
1972. | ||||
Some interoperability problems are reader bugs that are listed here | Some interoperability problems are reader bugs that are listed here | |||
mostly as warnings to developers of readers. | mostly as warnings to developers of readers. | |||
* Some readers do not support negative timestamps. Developers of | * Some readers do not support negative timestamps. Developers of | |||
distributed applications should keep this in mind if they need to | distributed applications should keep this in mind if they need to | |||
deal with pre-1970 data. | deal with pre-1970 data. | |||
* Some readers mishandle timestamps before the first transition that | * Some readers mishandle timestamps before the first transition that | |||
has a nonnegative timestamp. Readers that do not support negative | has a non-negative timestamp. Readers that do not support | |||
timestamps are likely to be more prone to this problem. | negative timestamps are likely to be more prone to this problem. | |||
* Some readers mishandle time zone abbreviations like "-08" that | * Some readers mishandle time zone abbreviations like "-08" that | |||
contain '+', '-', or digits. | contain "+", "-", or digits. | |||
* Some readers mishandle UT offsets that are out of the conventional | * Some readers mishandle UT offsets that are out of the conventional | |||
range of -12 through +12 hours and so do not support locations | range of -12 through +12 hours and so do not support locations | |||
like Kiritimati that are outside this range. | like Kiritimati that are outside this range. | |||
* Some readers mishandle UT offsets in the range [-3599, -1] seconds | * Some readers mishandle UT offsets in the range [-3599, -1] seconds | |||
from UT, because they integer-divide the offset by 3600 to get 0 | from UT because they integer-divide the offset by 3600 to get 0 | |||
and then display the hour part as "+00". | and then display the hour part as "+00". | |||
* Some readers mishandle UT offsets that are not a multiple of one | * Some readers mishandle UT offsets that are not a multiple of one | |||
hour, 15 minutes, or 1 minute. | hour, 15 minutes, or 1 minute. | |||
Appendix B. Example TZif Files | Appendix B. Example TZif Files | |||
The following sections contain annotated hexadecimal dumps of example | The following sections contain annotated hexadecimal dumps of example | |||
TZif files. | TZif files. | |||
skipping to change at page 27, line 47 ¶ | skipping to change at line 1214 ¶ | |||
B.1. Version 1 File Representing UTC (with Leap Seconds) | B.1. Version 1 File Representing UTC (with Leap Seconds) | |||
+========+=============+==================+========================+ | +========+=============+==================+========================+ | |||
| File | Hexadecimal | Record Name / | Field Value | | | File | Hexadecimal | Record Name / | Field Value | | |||
| Offset | Octets | Field Name | | | | Offset | Octets | Field Name | | | |||
+========+=============+==================+========================+ | +========+=============+==================+========================+ | |||
| 000 | 54 5a 69 66 | magic | "TZif" | | | 000 | 54 5a 69 66 | magic | "TZif" | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 004 | 00 | version | 0 (1) | | | 004 | 00 | version | 0 (1) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 005 | 00 00 00 00 | | | | | 005 | 00 00 00 00 | | | |||
| | 00 00 00 00 | | | | | | 00 00 00 00 | | | |||
| | 00 00 00 00 | | | | | | 00 00 00 00 | | | |||
| | 00 00 00 | | | | | | 00 00 00 | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 020 | 00 00 00 01 | isutcnt | 1 | | | 020 | 00 00 00 01 | isutcnt | 1 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 024 | 00 00 00 01 | isstdcnt | 1 | | | 024 | 00 00 00 01 | isstdcnt | 1 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 028 | 00 00 00 1b | leapcnt | 27 | | | 028 | 00 00 00 1b | leapcnt | 27 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 032 | 00 00 00 00 | timecnt | 0 | | | 032 | 00 00 00 00 | timecnt | 0 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 036 | 00 00 00 01 | typecnt | 1 | | | 036 | 00 00 00 01 | typecnt | 1 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 040 | 00 00 00 04 | charcnt | 4 | | | 040 | 00 00 00 04 | charcnt | 4 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | localtimetype[0] | | | | | localtimetype[0] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 044 | 00 00 00 00 | utoff | 0 (+00:00) | | | 044 | 00 00 00 00 | utoff | 0 (+00:00) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 048 | 00 | isdst | 0 (no) | | | 048 | 00 | isdst | 0 (no) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 049 | 00 | desigidx | 0 | | | 049 | 00 | desigidx | 0 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 050 | 55 54 43 00 | designations[0] | "UTC\0" | | | 050 | 55 54 43 00 | designations[0] | "UTC\0" | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[0] | | | | | leapsecond[0] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 054 | 04 b2 58 00 | occurrence | 78796800 | | | 054 | 04 b2 58 00 | occurrence | 78796800 | | |||
| | | | (1972-06-30T23:59:60Z) | | | | | | (1972-06-30T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 058 | 00 00 00 01 | correction | 1 | | | 058 | 00 00 00 01 | correction | 1 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[1] | | | | | leapsecond[1] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 062 | 05 a4 ec 01 | occurrence | 94694401 | | | 062 | 05 a4 ec 01 | occurrence | 94694401 | | |||
| | | | (1972-12-31T23:59:60Z) | | | | | | (1972-12-31T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 066 | 00 00 00 02 | correction | 2 | | | 066 | 00 00 00 02 | correction | 2 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[2] | | | | | leapsecond[2] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 070 | 07 86 1f 82 | occurrence | 126230402 | | | 070 | 07 86 1f 82 | occurrence | 126230402 | | |||
| | | | (1973-12-31T23:59:60Z) | | | | | | (1973-12-31T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 074 | 00 00 00 03 | correction | 3 | | | 074 | 00 00 00 03 | correction | 3 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[3] | | | | | leapsecond[3] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 078 | 09 67 53 03 | occurrence | 157766403 | | | 078 | 09 67 53 03 | occurrence | 157766403 | | |||
| | | | (1974-12-31T23:59:60Z) | | | | | | (1974-12-31T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 082 | 00 00 00 04 | correction | 4 | | | 082 | 00 00 00 04 | correction | 4 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[4] | | | | | leapsecond[4] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 086 | 0b 48 86 84 | occurrence | 189302404 | | | 086 | 0b 48 86 84 | occurrence | 189302404 | | |||
| | | | (1975-12-31T23:59:60Z) | | | | | | (1975-12-31T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 090 | 00 00 00 05 | correction | 5 | | | 090 | 00 00 00 05 | correction | 5 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[5] | | | | | leapsecond[5] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 094 | 0d 2b 0b 85 | occurrence | 220924805 | | | 094 | 0d 2b 0b 85 | occurrence | 220924805 | | |||
| | | | (1976-12-31T23:59:60Z) | | | | | | (1976-12-31T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 098 | 00 00 00 06 | correction | 6 | | | 098 | 00 00 00 06 | correction | 6 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[6] | | | | | leapsecond[6] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 102 | 0f 0c 3f 06 | occurrence | 252460806 | | | 102 | 0f 0c 3f 06 | occurrence | 252460806 | | |||
| | | | (1977-12-31T23:59:60Z) | | | | | | (1977-12-31T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 106 | 00 00 00 07 | correction | 7 | | | 106 | 00 00 00 07 | correction | 7 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[7] | | | | | leapsecond[7] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 110 | 10 ed 72 87 | occurrence | 283996807 | | | 110 | 10 ed 72 87 | occurrence | 283996807 | | |||
| | | | (1978-12-31T23:59:60Z) | | | | | | (1978-12-31T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 114 | 00 00 00 08 | correction | 8 | | | 114 | 00 00 00 08 | correction | 8 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[8] | | | | | leapsecond[8] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 118 | 12 ce a6 08 | occurrence | 315532808 | | | 118 | 12 ce a6 08 | occurrence | 315532808 | | |||
| | | | (1979-12-31T23:59:60Z) | | | | | | (1979-12-31T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 122 | 00 00 00 09 | correction | 9 | | | 122 | 00 00 00 09 | correction | 9 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[9] | | | | | leapsecond[9] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 126 | 15 9f ca 89 | occurrence | 362793609 | | | 126 | 15 9f ca 89 | occurrence | 362793609 | | |||
| | | | (1981-06-30T23:59:60Z) | | | | | | (1981-06-30T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 130 | 00 00 00 0a | correction | 10 | | | 130 | 00 00 00 0a | correction | 10 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[10] | | | | | leapsecond[10] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 134 | 17 80 fe 0a | occurrence | 394329610 | | | 134 | 17 80 fe 0a | occurrence | 394329610 | | |||
| | | | (1982-06-30T23:59:60Z) | | | | | | (1982-06-30T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 138 | 00 00 00 0b | correction | 11 | | | 138 | 00 00 00 0b | correction | 11 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[11] | | | | | leapsecond[11] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 142 | 19 62 31 8b | occurrence | 425865611 | | | 142 | 19 62 31 8b | occurrence | 425865611 | | |||
| | | | (1983-06-30T23:59:60Z) | | | | | | (1983-06-30T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 146 | 00 00 00 0c | correction | 12 | | | 146 | 00 00 00 0c | correction | 12 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[12] | | | | | leapsecond[12] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 150 | 1d 25 ea 0c | occurrence | 489024012 | | | 150 | 1d 25 ea 0c | occurrence | 489024012 | | |||
| | | | (1985-06-30T23:59:60Z) | | | | | | (1985-06-30T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 154 | 00 00 00 0d | correction | 13 | | | 154 | 00 00 00 0d | correction | 13 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[13] | | | | | leapsecond[13] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 158 | 21 da e5 0d | occurrence | 567993613 | | | 158 | 21 da e5 0d | occurrence | 567993613 | | |||
| | | | (1987-12-31T23:59:60Z) | | | | | | (1987-12-31T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 162 | 00 00 00 0e | correction | 14 | | | 162 | 00 00 00 0e | correction | 14 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[14] | | | | | leapsecond[14] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 166 | 25 9e 9d 8e | occurrence | 631152014 | | | 166 | 25 9e 9d 8e | occurrence | 631152014 | | |||
| | | | (1989-12-31T23:59:60Z) | | | | | | (1989-12-31T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 170 | 00 00 00 0f | correction | 15 | | | 170 | 00 00 00 0f | correction | 15 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[15] | | | | | leapsecond[15] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 174 | 27 7f d1 0f | occurrence | 662688015 | | | 174 | 27 7f d1 0f | occurrence | 662688015 | | |||
| | | | (1990-12-31T23:59:60Z) | | | | | | (1990-12-31T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 178 | 00 00 00 10 | correction | 16 | | | 178 | 00 00 00 10 | correction | 16 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[16] | | | | | leapsecond[16] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 182 | 2a 50 f5 90 | occurrence | 709948816 | | | 182 | 2a 50 f5 90 | occurrence | 709948816 | | |||
| | | | (1992-06-30T23:59:60Z) | | | | | | (1992-06-30T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 186 | 00 00 00 11 | correction | 17 | | | 186 | 00 00 00 11 | correction | 17 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[17] | | | | | leapsecond[17] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 190 | 2c 32 29 11 | occurrence | 741484817 | | | 190 | 2c 32 29 11 | occurrence | 741484817 | | |||
| | | | (1993-06-30T23:59:60Z) | | | | | | (1993-06-30T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 194 | 00 00 00 12 | correction | 18 | | | 194 | 00 00 00 12 | correction | 18 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[18] | | | | | leapsecond[18] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 198 | 2e 13 5c 92 | occurrence | 773020818 | | | 198 | 2e 13 5c 92 | occurrence | 773020818 | | |||
| | | | (1994-06-30T23:59:60Z) | | | | | | (1994-06-30T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 202 | 00 00 00 13 | correction | 19 | | | 202 | 00 00 00 13 | correction | 19 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[19] | | | | | leapsecond[19] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 206 | 30 e7 24 13 | occurrence | 820454419 | | | 206 | 30 e7 24 13 | occurrence | 820454419 | | |||
| | | | (1995-12-31T23:59:60Z) | | | | | | (1995-12-31T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 210 | 00 00 00 14 | correction | 20 | | | 210 | 00 00 00 14 | correction | 20 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[20] | | | | | leapsecond[20] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 214 | 33 b8 48 94 | occurrence | 867715220 | | | 214 | 33 b8 48 94 | occurrence | 867715220 | | |||
| | | | (1997-06-30T23:59:60Z) | | | | | | (1997-06-30T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 218 | 00 00 00 15 | correction | 21 | | | 218 | 00 00 00 15 | correction | 21 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[21] | | | | | leapsecond[21] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 222 | 36 8c 10 15 | occurrence | 915148821 | | | 222 | 36 8c 10 15 | occurrence | 915148821 | | |||
| | | | (1998-12-31T23:59:60Z) | | | | | | (1998-12-31T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 226 | 00 00 00 16 | correction | 22 | | | 226 | 00 00 00 16 | correction | 22 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[22] | | | | | leapsecond[22] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 230 | 43 b7 1b 96 | occurrence | 1136073622 | | | 230 | 43 b7 1b 96 | occurrence | 1136073622 | | |||
| | | | (2005-12-31T23:59:60Z) | | | | | | (2005-12-31T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 234 | 00 00 00 17 | correction | 23 | | | 234 | 00 00 00 17 | correction | 23 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[23] | | | | | leapsecond[23] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 238 | 49 5c 07 97 | occurrence | 1230768023 | | | 238 | 49 5c 07 97 | occurrence | 1230768023 | | |||
| | | | (2008-12-31T23:59:60Z) | | | | | | (2008-12-31T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 242 | 00 00 00 18 | correction | 24 | | | 242 | 00 00 00 18 | correction | 24 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[24] | | | | | leapsecond[24] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 246 | 4f ef 93 18 | occurrence | 1341100824 | | | 246 | 4f ef 93 18 | occurrence | 1341100824 | | |||
| | | | (2012-06-30T23:59:60Z) | | | | | | (2012-06-30T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 250 | 00 00 00 19 | correction | 25 | | | 250 | 00 00 00 19 | correction | 25 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[25] | | | | | leapsecond[25] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 254 | 55 93 2d 99 | occurrence | 1435708825 | | | 254 | 55 93 2d 99 | occurrence | 1435708825 | | |||
| | | | (2015-06-30T23:59:60Z) | | | | | | (2015-06-30T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 258 | 00 00 00 1a | correction | 26 | | | 258 | 00 00 00 1a | correction | 26 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | leapsecond[26] | | | | | leapsecond[26] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 262 | 58 68 46 9a | occurrence | 1483228826 | | | 262 | 58 68 46 9a | occurrence | 1483228826 | | |||
| | | | (2016-12-31T23:59:60Z) | | | | | | (2016-12-31T23:59:60Z) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 266 | 00 00 00 1b | correction | 27 | | | 266 | 00 00 00 1b | correction | 27 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 270 | 00 | standard/wall[0] | 0 (wall) | | | 270 | 00 | standard/wall[0] | 0 (wall) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
skipping to change at page 33, line 32 ¶ | skipping to change at line 1488 ¶ | |||
B.2. Version 2 File Representing Pacific/Honolulu | B.2. Version 2 File Representing Pacific/Honolulu | |||
+========+=============+==================+========================+ | +========+=============+==================+========================+ | |||
| File | Hexadecimal | Record Name / | Field Value | | | File | Hexadecimal | Record Name / | Field Value | | |||
| Offset | Octets | Field Name | | | | Offset | Octets | Field Name | | | |||
+========+=============+==================+========================+ | +========+=============+==================+========================+ | |||
| 000 | 54 5a 69 66 | magic | "TZif" | | | 000 | 54 5a 69 66 | magic | "TZif" | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 004 | 32 | version | '2' (2) | | | 004 | 32 | version | '2' (2) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 005 | 00 00 00 00 | | | | | 005 | 00 00 00 00 | | | |||
| | 00 00 00 00 | | | | | | 00 00 00 00 | | | |||
| | 00 00 00 00 | | | | | | 00 00 00 00 | | | |||
| | 00 00 00 | | | | | | 00 00 00 | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 020 | 00 00 00 06 | isutcnt | 6 | | | 020 | 00 00 00 06 | isutcnt | 6 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 024 | 00 00 00 06 | isstdcnt | 6 | | | 024 | 00 00 00 06 | isstdcnt | 6 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 028 | 00 00 00 00 | leapcnt | 0 | | | 028 | 00 00 00 00 | leapcnt | 0 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 032 | 00 00 00 07 | timecnt | 7 | | | 032 | 00 00 00 07 | timecnt | 7 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 036 | 00 00 00 06 | typecnt | 6 | | | 036 | 00 00 00 06 | typecnt | 6 | | |||
skipping to change at page 34, line 38 ¶ | skipping to change at line 1542 ¶ | |||
| 074 | 01 | trans type[2] | 1 | | | 074 | 01 | trans type[2] | 1 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 075 | 03 | trans type[3] | 3 | | | 075 | 03 | trans type[3] | 3 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 076 | 04 | trans type[4] | 4 | | | 076 | 04 | trans type[4] | 4 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 077 | 01 | trans type[5] | 1 | | | 077 | 01 | trans type[5] | 1 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 078 | 05 | trans type[6] | 5 | | | 078 | 05 | trans type[6] | 5 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | localtimetype[0] | | | | | localtimetype[0] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 079 | ff ff 6c 02 | utoff | -37886 (-10:31:26) | | | 079 | ff ff 6c 02 | utoff | -37886 (-10:31:26) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 083 | 00 | isdst | 0 (no) | | | 083 | 00 | isdst | 0 (no) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 084 | 00 | desigidx | 0 | | | 084 | 00 | desigidx | 0 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | localtimetype[1] | | | | | localtimetype[1] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 085 | ff ff 6c 58 | utoff | -37800 (-10:30) | | | 085 | ff ff 6c 58 | utoff | -37800 (-10:30) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 089 | 00 | isdst | 0 (no) | | | 089 | 00 | isdst | 0 (no) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 090 | 04 | desigidx | 4 | | | 090 | 04 | desigidx | 4 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | localtimetype[2] | | | | | localtimetype[2] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 091 | ff ff 7a 68 | utoff | -34200 (-09:30) | | | 091 | ff ff 7a 68 | utoff | -34200 (-09:30) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 095 | 01 | isdst | 1 (yes) | | | 095 | 01 | isdst | 1 (yes) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 096 | 08 | desigidx | 8 | | | 096 | 08 | desigidx | 8 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | localtimetype[3] | | | | | localtimetype[3] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 097 | ff ff 7a 68 | utoff | -34200 (-09:30) | | | 097 | ff ff 7a 68 | utoff | -34200 (-09:30) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 101 | 01 | isdst | 1 (yes) | | | 101 | 01 | isdst | 1 (yes) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 102 | 0c | desigidx | 12 | | | 102 | 0c | desigidx | 12 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | localtimetype[4] | | | | | localtimetype[4] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 103 | ff ff 7a 68 | utoff | -34200 (-09:30) | | | 103 | ff ff 7a 68 | utoff | -34200 (-09:30) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 107 | 01 | isdst | 1 (yes) | | | 107 | 01 | isdst | 1 (yes) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 108 | 10 | desigidx | 16 | | | 108 | 10 | desigidx | 16 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | localtimetype[5] | | | | | localtimetype[5] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 109 | ff ff 73 60 | utoff | -36000 (-10:00) | | | 109 | ff ff 73 60 | utoff | -36000 (-10:00) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 113 | 00 | isdst | 0 (no) | | | 113 | 00 | isdst | 0 (no) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 114 | 04 | desigidx | 4 | | | 114 | 04 | desigidx | 4 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 115 | 4c 4d 54 00 | designations[0] | "LMT\0" | | | 115 | 4c 4d 54 00 | designations[0] | "LMT\0" | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
skipping to change at page 36, line 38 ¶ | skipping to change at line 1638 ¶ | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 145 | 01 | UT/local[4] | 1 (UT) | | | 145 | 01 | UT/local[4] | 1 (UT) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 146 | 00 | UT/local[5] | 0 (local) | | | 146 | 00 | UT/local[5] | 0 (local) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 147 | 54 5a 69 66 | magic | "TZif" | | | 147 | 54 5a 69 66 | magic | "TZif" | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 151 | 32 | version | '2' (2) | | | 151 | 32 | version | '2' (2) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 152 | 00 00 00 00 | | | | | 152 | 00 00 00 00 | | | |||
| | 00 00 00 00 | | | | | | 00 00 00 00 | | | |||
| | 00 00 00 00 | | | | | | 00 00 00 00 | | | |||
| | 00 00 00 | | | | | | 00 00 00 | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 167 | 00 00 00 06 | isutcnt | 6 | | | 167 | 00 00 00 06 | isutcnt | 6 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 171 | 00 00 00 06 | isstdcnt | 6 | | | 171 | 00 00 00 06 | isstdcnt | 6 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 175 | 00 00 00 00 | leapcnt | 0 | | | 175 | 00 00 00 00 | leapcnt | 0 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 179 | 00 00 00 07 | timecnt | 7 | | | 179 | 00 00 00 07 | timecnt | 7 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 183 | 00 00 00 06 | typecnt | 6 | | | 183 | 00 00 00 06 | typecnt | 6 | | |||
skipping to change at page 37, line 44 ¶ | skipping to change at line 1692 ¶ | |||
| 249 | 01 | trans type[2] | 1 | | | 249 | 01 | trans type[2] | 1 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 250 | 03 | trans type[3] | 3 | | | 250 | 03 | trans type[3] | 3 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 251 | 04 | trans type[4] | 4 | | | 251 | 04 | trans type[4] | 4 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 252 | 01 | trans type[5] | 1 | | | 252 | 01 | trans type[5] | 1 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 253 | 05 | trans type[6] | 5 | | | 253 | 05 | trans type[6] | 5 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | localtimetype[0] | | | | | localtimetype[0] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 254 | ff ff 6c 02 | utoff | -37886 (-10:31:26) | | | 254 | ff ff 6c 02 | utoff | -37886 (-10:31:26) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 258 | 00 | isdst | 0 (no) | | | 258 | 00 | isdst | 0 (no) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 259 | 00 | desigidx | 0 | | | 259 | 00 | desigidx | 0 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | localtimetype[1] | | | | | localtimetype[1] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 260 | ff ff 6c 58 | utoff | -37800 (-10:30) | | | 260 | ff ff 6c 58 | utoff | -37800 (-10:30) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 264 | 00 | isdst | 0 (no) | | | 264 | 00 | isdst | 0 (no) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 265 | 04 | desigidx | 4 | | | 265 | 04 | desigidx | 4 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | localtimetype[2] | | | | | localtimetype[2] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 266 | ff ff 7a 68 | utoff | -34200 (-09:30) | | | 266 | ff ff 7a 68 | utoff | -34200 (-09:30) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 270 | 01 | isdst | 1 (yes) | | | 270 | 01 | isdst | 1 (yes) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 271 | 08 | desigidx | 8 | | | 271 | 08 | desigidx | 8 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | localtimetype[3] | | | | | localtimetype[3] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 272 | ff ff 7a 68 | utoff | -34200 (-09:30) | | | 272 | ff ff 7a 68 | utoff | -34200 (-09:30) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 276 | 01 | isdst | 1 (yes) | | | 276 | 01 | isdst | 1 (yes) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 277 | 0c | desigidx | 12 | | | 277 | 0c | desigidx | 12 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | localtimetype[4] | | | | | localtimetype[4] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 278 | ff ff 7a 68 | utoff | -34200 (-09:30) | | | 278 | ff ff 7a 68 | utoff | -34200 (-09:30) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 282 | 01 | isdst | 1 (yes) | | | 282 | 01 | isdst | 1 (yes) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 283 | 10 | desigidx | 16 | | | 283 | 10 | desigidx | 16 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | localtimetype[5] | | | | | localtimetype[5] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 284 | ff ff 73 60 | utoff | -36000 (-10:00) | | | 284 | ff ff 73 60 | utoff | -36000 (-10:00) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 288 | 00 | isdst | 0 (no) | | | 288 | 00 | isdst | 0 (no) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 289 | 04 | desigidx | 4 | | | 289 | 04 | desigidx | 4 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 290 | 4c 4d 54 00 | designations[0] | "LMT\0" | | | 290 | 4c 4d 54 00 | designations[0] | "LMT\0" | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
skipping to change at page 40, line 34 ¶ | skipping to change at line 1823 ¶ | |||
daylight saving time of 1933-05-04T02:30:00-09:30 (HDT). | daylight saving time of 1933-05-04T02:30:00-09:30 (HDT). | |||
To determine the local time in this time zone corresponding to | To determine the local time in this time zone corresponding to | |||
2019-01-01T00:00:00Z (UNIX time = 1546300800), the following | 2019-01-01T00:00:00Z (UNIX time = 1546300800), the following | |||
procedure would be followed: | procedure would be followed: | |||
1. Find the latest time transition prior to the time of interest | 1. Find the latest time transition prior to the time of interest | |||
(there is no such transition). | (there is no such transition). | |||
2. Look up the TZ string in the footer ("HST10"), which indicates | 2. Look up the TZ string in the footer ("HST10"), which indicates | |||
that the time zone designation is "HST" year-round, and the | that the time zone designation is "HST" year-round and the offset | |||
offset to UTC is 10:00. | to UTC is 10:00. | |||
3. Subtract the UTC offset from the time of interest to yield a | 3. Subtract the UTC offset from the time of interest to yield a | |||
standard local time of 2018-12-31T14:00:00-10:00 (HST). | standard local time of 2018-12-31T14:00:00-10:00 (HST). | |||
B.3. Truncated Version 2 File Representing Pacific/Johnston | B.3. Truncated Version 2 File Representing Pacific/Johnston | |||
The following TZif file has been truncated to end on | 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). | 2004-06-15). | |||
In this example: | In this example: | |||
* The version 1 header contains only the required minimum data, | * The version 1 header contains only the required minimum data, | |||
which will be ignored by readers. | which will be ignored by readers. | |||
* The version 2 header leverages the fact that by specifying | * The version 2 header leverages the fact that, by specifying | |||
'isutcnt' and 'isstdcnt' as zero, all transition times associated | 'isutcnt' and 'isstdcnt' as zero, all transition times associated | |||
with local time types are assumed to be specified as local wall- | with local time types are assumed to be specified as local wall- | |||
clock time (see the definitions of UT/local indicators and | clock time (see the definitions of UT/local indicators and | |||
standard/wall indicators in Section 3.2). | standard/wall indicators in Section 3.2). | |||
* The time type of the last transition has designation "-00", | * The time type of the last transition has designation "-00", | |||
indicating that local time is unspecified. | indicating that local time is unspecified. | |||
* The TZ string is empty, indicating that there are no known future | * The TZ string is empty, indicating that there are no known future | |||
transitions. | transitions. | |||
skipping to change at page 41, line 42 ¶ | skipping to change at line 1877 ¶ | |||
| 024 | 00 00 00 00 | isstdcnt | 0 | | | 024 | 00 00 00 00 | isstdcnt | 0 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 028 | 00 00 00 00 | leapcnt | 0 | | | 028 | 00 00 00 00 | leapcnt | 0 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 032 | 00 00 00 00 | timecnt | 0 | | | 032 | 00 00 00 00 | timecnt | 0 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 036 | 00 00 00 01 | typecnt | 1 | | | 036 | 00 00 00 01 | typecnt | 1 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 040 | 00 00 00 01 | charcnt | 1 | | | 040 | 00 00 00 01 | charcnt | 1 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | localtimetype[0] | | | | | localtimetype[0] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 044 | 00 00 00 00 | utoff | 0 (+00:00) | | | 044 | 00 00 00 00 | utoff | 0 (+00:00) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 048 | 00 | isdst | 0 (no) | | | 048 | 00 | isdst | 0 (no) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 049 | 00 | desigidx | 0 | | | 049 | 00 | desigidx | 0 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 050 | 00 | designations[0] | "\0" | | | 050 | 00 | designations[0] | "\0" | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 051 | 54 5a 69 66 | magic | "TZif" | | | 051 | 54 5a 69 66 | magic | "TZif" | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 055 | 32 | version | '2' (2) | | | 055 | 32 | version | '2' (2) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 056 | 00 00 00 00 | | | | | 056 | 00 00 00 00 | | | |||
| | 00 00 00 00 | | | | | | 00 00 00 00 | | | |||
| | 00 00 00 00 | | | | | | 00 00 00 00 | | | |||
| | 00 00 00 | | | | | | 00 00 00 | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 071 | 00 00 00 00 | isutcnt | 0 | | | 071 | 00 00 00 00 | isutcnt | 0 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 075 | 00 00 00 00 | isstdcnt | 0 | | | 075 | 00 00 00 00 | isstdcnt | 0 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 079 | 00 00 00 00 | leapcnt | 0 | | | 079 | 00 00 00 00 | leapcnt | 0 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 083 | 00 00 00 08 | timecnt | 8 | | | 083 | 00 00 00 08 | timecnt | 8 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 087 | 00 00 00 07 | typecnt | 7 | | | 087 | 00 00 00 07 | typecnt | 7 | | |||
skipping to change at page 43, line 21 ¶ | skipping to change at line 1953 ¶ | |||
| 162 | 04 | trans type[3] | 4 | | | 162 | 04 | trans type[3] | 4 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 163 | 05 | trans type[4] | 5 | | | 163 | 05 | trans type[4] | 5 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 164 | 02 | trans type[5] | 2 | | | 164 | 02 | trans type[5] | 2 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 165 | 06 | trans type[6] | 6 | | | 165 | 06 | trans type[6] | 6 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 166 | 01 | trans type[7] | 1 | | | 166 | 01 | trans type[7] | 1 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | localtimetype[0] | | | | | localtimetype[0] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 167 | ff ff 6c 02 | utoff | -37886 (-10:31:26) | | | 167 | ff ff 6c 02 | utoff | -37886 (-10:31:26) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 171 | 00 | isdst | 0 (no) | | | 171 | 00 | isdst | 0 (no) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 172 | 04 | desigidx | 4 | | | 172 | 04 | desigidx | 4 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | localtimetype[1] | | | | | localtimetype[1] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 173 | 00 00 00 00 | utoff | 0 (+00:00) | | | 173 | 00 00 00 00 | utoff | 0 (+00:00) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 177 | 00 | isdst | 0 (no) | | | 177 | 00 | isdst | 0 (no) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 178 | 00 | desigidx | 0 | | | 178 | 00 | desigidx | 0 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | localtimetype[2] | | | | | localtimetype[2] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 179 | ff ff 6c 58 | utoff | -37800 (-10:30) | | | 179 | ff ff 6c 58 | utoff | -37800 (-10:30) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 183 | 00 | isdst | 0 (no) | | | 183 | 00 | isdst | 0 (no) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 184 | 08 | desigidx | 8 | | | 184 | 08 | desigidx | 8 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | localtimetype[3] | | | | | localtimetype[3] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 185 | ff ff 7a 68 | utoff | -34200 (-09:30) | | | 185 | ff ff 7a 68 | utoff | -34200 (-09:30) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 189 | 01 | isdst | 1 (yes) | | | 189 | 01 | isdst | 1 (yes) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 190 | 0c | desigidx | 12 | | | 190 | 0c | desigidx | 12 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | localtimetype[4] | | | | | localtimetype[4] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 191 | ff ff 7a 68 | utoff | -34200 (-09:30) | | | 191 | ff ff 7a 68 | utoff | -34200 (-09:30) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 195 | 01 | isdst | 1 (yes) | | | 195 | 01 | isdst | 1 (yes) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 196 | 10 | desigidx | 16 | | | 196 | 10 | desigidx | 16 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | localtimetype[5] | | | | | localtimetype[5] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 197 | ff ff 7a 68 | utoff | -34200 (-09:30) | | | 197 | ff ff 7a 68 | utoff | -34200 (-09:30) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 201 | 01 | isdst | 1 (yes) | | | 201 | 01 | isdst | 1 (yes) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 202 | 14 | desigidx | 20 | | | 202 | 14 | desigidx | 20 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +----------------------+------------------+------------------------+ | |||
| | | localtimetype[6] | | | | | localtimetype[6] | | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 203 | ff ff 73 60 | utoff | -36000 (-10:00) | | | 203 | ff ff 73 60 | utoff | -36000 (-10:00) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 207 | 00 | isdst | 0 (no) | | | 207 | 00 | isdst | 0 (no) | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 208 | 08 | desigidx | 8 | | | 208 | 08 | desigidx | 8 | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| 209 | 2d 30 30 00 | designations[0] | "-00\0" | | | 209 | 2d 30 30 00 | designations[0] | "-00\0" | | |||
+--------+-------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
skipping to change at page 45, line 18 ¶ | skipping to change at line 2046 ¶ | |||
Table 3 | Table 3 | |||
B.4. Truncated Version 3 File Representing Asia/Jerusalem | B.4. Truncated Version 3 File Representing Asia/Jerusalem | |||
The following TZif file has been truncated to start on | The following TZif file has been truncated to start on | |||
2038-01-01T00:00:00Z. | 2038-01-01T00:00:00Z. | |||
In this example: | In this example: | |||
* The start time value can not be represented using 32 bits, so the | * The start time value cannot be represented using 32 bits, so the | |||
version 1 header contains only the required minimum data, which | version 1 header contains only the required minimum data, which | |||
will be ignored by readers. | will be ignored by readers. | |||
* The version 3 header leverages the fact that by specifying | * The version 3 header leverages the fact that, by specifying | |||
'isutcnt' and 'isstdcnt' as zero, all transition times associated | 'isutcnt' and 'isstdcnt' as zero, all transition times associated | |||
with local time types are assumed to be specified as local wall- | with local time types are assumed to be specified as local wall- | |||
clock time (see the definitions of UT/local indicators and | clock time (see the definitions of UT/local indicators and | |||
standard/wall indicators in Section 3.2). | standard/wall indicators in Section 3.2). | |||
* Time type 0 has designation "-00", indicating that local time is | * Time type 0 has designation "-00", indicating that local time is | |||
unspecified prior to the truncation time. | unspecified prior to the truncation time. | |||
* The TZ string value has been line-wrapped for presentation | * The TZ string value has been line-wrapped for presentation | |||
purposes only. | purposes only. | |||
+======+===========+================+==============================+ | +======+===========+================+==============================+ | |||
|File |Hexadecimal|Record Name / | Field Value | | |File |Hexadecimal|Record Name / | Field Value | | |||
|Offset|Octets |Field Name | | | |Offset|Octets |Field Name | | | |||
+======+===========+================+==============================+ | +======+===========+================+==============================+ | |||
|000 |54 5a 69 66|magic | "TZif" | | |000 |54 5a 69 66|magic | "TZif" | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|004 |33 |version | '3' (3) | | |004 |33 |version | '3' (3) | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|005 |00 00 00 00| | | | |005 |00 00 00 00| | | |||
| |00 00 00 00| | | | | |00 00 00 00| | | |||
| |00 00 00 00| | | | | |00 00 00 00| | | |||
| |00 00 00 | | | | | |00 00 00 | | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|020 |00 00 00 00|isutcnt | 0 | | |020 |00 00 00 00|isutcnt | 0 | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|024 |00 00 00 00|isstdcnt | 0 | | |024 |00 00 00 00|isstdcnt | 0 | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|028 |00 00 00 00|leapcnt | 0 | | |028 |00 00 00 00|leapcnt | 0 | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|032 |00 00 00 00|timecnt | 0 | | |032 |00 00 00 00|timecnt | 0 | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|036 |00 00 00 01|typecnt | 1 | | |036 |00 00 00 01|typecnt | 1 | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|040 |00 00 00 01|charcnt | 1 | | |040 |00 00 00 01|charcnt | 1 | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
+------+-----------+----------------+------------------------------+ | +------------------+----------------+------------------------------+ | |||
| | |localtimetype[0]| | | | |localtimetype[0]| | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|044 |00 00 00 00|utoff | 0 (+00:00) | | |044 |00 00 00 00|utoff | 0 (+00:00) | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|048 |00 |isdst | 0 (no) | | |048 |00 |isdst | 0 (no) | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|049 |00 |desigidx | 0 | | |049 |00 |desigidx | 0 | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|050 |00 |designations[0] | "\0" | | |050 |00 |designations[0] | "\0" | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|051 |54 5a 69 66|magic | "TZif" | | |051 |54 5a 69 66|magic | "TZif" | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|055 |33 |version | '3' (3) | | |055 |33 |version | '3' (3) | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|056 |00 00 00 00| | | | |056 |00 00 00 00| | | |||
| |00 00 00 00| | | | | |00 00 00 00| | | |||
| |00 00 00 00| | | | | |00 00 00 00| | | |||
| |00 00 00 | | | | | |00 00 00 | | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|071 |00 00 00 00|isutcnt | 0 | | |071 |00 00 00 00|isutcnt | 0 | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|075 |00 00 00 00|isstdcnt | 0 | | |075 |00 00 00 00|isstdcnt | 0 | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|079 |00 00 00 00|leapcnt | 0 | | |079 |00 00 00 00|leapcnt | 0 | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|083 |00 00 00 01|timecnt | 1 | | |083 |00 00 00 01|timecnt | 1 | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|087 |00 00 00 02|typecnt | 2 | | |087 |00 00 00 02|typecnt | 2 | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|091 |00 00 00 08|charcnt | 8 | | |091 |00 00 00 08|charcnt | 8 | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|095 |00 00 00 00|trans time[0] | 2145916800 | | |095 |00 00 00 00|trans time[0] | 2145916800 | | |||
| |7f e8 17 80| | (2038-01-01T00:00:00Z) | | | |7f e8 17 80| | (2038-01-01T00:00:00Z) | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|103 |01 |trans type[0] | 1 | | |103 |01 |trans type[0] | 1 | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
+------+-----------+----------------+------------------------------+ | +------------------+----------------+------------------------------+ | |||
| | |localtimetype[0]| | | | |localtimetype[0]| | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|104 |00 00 00 00|utoff | 0 (+00:00) | | |104 |00 00 00 00|utoff | 0 (+00:00) | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|108 |00 |isdst | 0 (no) | | |108 |00 |isdst | 0 (no) | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|109 |00 |desigidx | 0 | | |109 |00 |desigidx | 0 | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
+------+-----------+----------------+------------------------------+ | +------------------+----------------+------------------------------+ | |||
| | |localtimetype[1]| | | | |localtimetype[1]| | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|110 |00 00 1c 20|utoff | 7200 (+02:00) | | |110 |00 00 1c 20|utoff | 7200 (+02:00) | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|114 |00 |isdst | 0 (no) | | |114 |00 |isdst | 0 (no) | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|115 |04 |desigidx | 4 | | |115 |04 |desigidx | 4 | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
|116 |2d 30 30 00|designations[0] | "-00\0" | | |116 |2d 30 30 00|designations[0] | "-00\0" | | |||
+------+-----------+----------------+------------------------------+ | +------+-----------+----------------+------------------------------+ | |||
skipping to change at page 48, line 5 ¶ | skipping to change at line 2177 ¶ | |||
B.5. Truncated Version 4 File Representing Europe/London | B.5. Truncated Version 4 File Representing Europe/London | |||
The following TZif file has been truncated to start on | The following TZif file has been truncated to start on | |||
2022-01-01T00:00:00Z. | 2022-01-01T00:00:00Z. | |||
In this example: | In this example: | |||
* The version 1 header contains only the required minimum data, | * The version 1 header contains only the required minimum data, | |||
which will be ignored by readers. | which will be ignored by readers. | |||
* The version 4 header leverages the fact that by specifying | * The version 4 header leverages the fact that, by specifying | |||
'isutcnt' and 'isstdcnt' as zero, all transition times associated | 'isutcnt' and 'isstdcnt' as zero, all transition times associated | |||
with local time types are assumed to be specified as local wall- | with local time types are assumed to be specified as local wall- | |||
clock time (see the definitions of UT/local indicators and | clock time (see the definitions of UT/local indicators and | |||
standard/wall indicators in Section 3.2). | standard/wall indicators in Section 3.2). | |||
* Time type 0 has designation "-00", indicating that local time is | * Time type 0 has designation "-00", indicating that local time is | |||
unspecified prior to the truncation time. | unspecified prior to the truncation time. | |||
* The first leap-second occurrence is the most recent one prior to | * The first leap-second occurrence is the most recent one prior to | |||
the truncation time. | the truncation time. | |||
skipping to change at page 48, line 32 ¶ | skipping to change at line 2204 ¶ | |||
purposes only. | purposes only. | |||
+======+===========+==================+============================+ | +======+===========+==================+============================+ | |||
|File |Hexadecimal| Record Name / | Field Value | | |File |Hexadecimal| Record Name / | Field Value | | |||
|Offset|Octets | Field Name | | | |Offset|Octets | Field Name | | | |||
+======+===========+==================+============================+ | +======+===========+==================+============================+ | |||
|000 |54 5a 69 66| magic | "TZif" | | |000 |54 5a 69 66| magic | "TZif" | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|004 |34 | version | '4' (4) | | |004 |34 | version | '4' (4) | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|005 |00 00 00 00| | | | |005 |00 00 00 00| | | |||
| |00 00 00 00| | | | | |00 00 00 00| | | |||
| |00 00 00 00| | | | | |00 00 00 00| | | |||
| |00 00 00 | | | | | |00 00 00 | | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|020 |00 00 00 00| isutcnt | 0 | | |020 |00 00 00 00| isutcnt | 0 | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|024 |00 00 00 00| isstdcnt | 0 | | |024 |00 00 00 00| isstdcnt | 0 | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|028 |00 00 00 00| leapcnt | 0 | | |028 |00 00 00 00| leapcnt | 0 | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|032 |00 00 00 00| timecnt | 0 | | |032 |00 00 00 00| timecnt | 0 | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|036 |00 00 00 01| typecnt | 1 | | |036 |00 00 00 01| typecnt | 1 | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|040 |00 00 00 01| charcnt | 1 | | |040 |00 00 00 01| charcnt | 1 | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
+------+-----------+------------------+----------------------------+ | +------------------+------------------+----------------------------+ | |||
| | | localtimetype[0] | | | | | localtimetype[0] | | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|044 |00 00 00 00| utoff | 0 (+00:00) | | |044 |00 00 00 00| utoff | 0 (+00:00) | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|048 |00 | isdst | 0 (no) | | |048 |00 | isdst | 0 (no) | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|049 |00 | desigidx | 0 | | |049 |00 | desigidx | 0 | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|050 |00 | designations[0] | "\0" | | |050 |00 | designations[0] | "\0" | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|051 |54 5a 69 66| magic | "TZif" | | |051 |54 5a 69 66| magic | "TZif" | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|055 |34 | version | '4' (4) | | |055 |34 | version | '4' (4) | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|056 |00 00 00 00| | | | |056 |00 00 00 00| | | |||
| |00 00 00 00| | | | | |00 00 00 00| | | |||
| |00 00 00 00| | | | | |00 00 00 00| | | |||
| |00 00 00 | | | | | |00 00 00 | | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|071 |00 00 00 00| isutcnt | 0 | | |071 |00 00 00 00| isutcnt | 0 | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|075 |00 00 00 00| isstdcnt | 0 | | |075 |00 00 00 00| isstdcnt | 0 | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|079 |00 00 00 02| leapcnt | 2 | | |079 |00 00 00 02| leapcnt | 2 | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|083 |00 00 00 01| timecnt | 1 | | |083 |00 00 00 01| timecnt | 1 | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|087 |00 00 00 02| typecnt | 2 | | |087 |00 00 00 02| typecnt | 2 | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|091 |00 00 00 08| charcnt | 8 | | |091 |00 00 00 08| charcnt | 8 | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|095 |00 00 00 00| trans time[0] | 1640995227 | | |095 |00 00 00 00| trans time[0] | 1640995227 | | |||
| |61 cf 99 9b| | (2022-01-01T00:00:27Z) | | | |61 cf 99 9b| | (2022-01-01T00:00:27Z) | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|103 |01 | trans type[0] | 1 | | |103 |01 | trans type[0] | 1 | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
+------+-----------+------------------+----------------------------+ | +------------------+------------------+----------------------------+ | |||
| | | localtimetype[0] | | | | | localtimetype[0] | | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|104 |00 00 00 00| utoff | 0 (+00:00) | | |104 |00 00 00 00| utoff | 0 (+00:00) | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|108 |00 | isdst | 0 (no) | | |108 |00 | isdst | 0 (no) | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|109 |00 | desigidx | 0 | | |109 |00 | desigidx | 0 | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
+------+-----------+------------------+----------------------------+ | +------------------+------------------+----------------------------+ | |||
| | | localtimetype[1] | | | | | localtimetype[1] | | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|110 |00 00 00 00| utoff | 0 (+00:00) | | |110 |00 00 00 00| utoff | 0 (+00:00) | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|114 |00 | isdst | 0 (no) | | |114 |00 | isdst | 0 (no) | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|115 |04 | desigidx | 4 | | |115 |04 | desigidx | 4 | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|116 |2d 30 30 00| designations[0] | "-00\0" | | |116 |2d 30 30 00| designations[0] | "-00\0" | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|120 |47 4d 54 00| designations[4] | "GMT\0" | | |120 |47 4d 54 00| designations[4] | "GMT\0" | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
+------+-----------+------------------+----------------------------+ | +------------------+------------------+----------------------------+ | |||
| | | leapsecond[0] | | | | | leapsecond[0] | | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|124 |00 00 00 00| occurrence | 1483228826 | | |124 |00 00 00 00| occurrence | 1483228826 | | |||
| |58 68 46 9a| | (2016-12-31T23:59:60Z) | | | |58 68 46 9a| | (2016-12-31T23:59:60Z) | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|132 |00 00 00 1b| correction | 27 | | |132 |00 00 00 1b| correction | 27 | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
+------+-----------+------------------+----------------------------+ | +------------------+------------------+----------------------------+ | |||
| | | leapsecond[1] | | | | | leapsecond[1] | | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|136 |00 00 00 00| occurrence | 1719532827 | | |136 |00 00 00 00| occurrence | 1719532827 | | |||
| |66 7d fd 1b| | (2024-06-28T00:00:01Z) | | | |66 7d fd 1b| | (2024-06-28T00:00:01Z) | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|144 |00 00 00 1b| correction | 27 | | |144 |00 00 00 1b| correction | 27 | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|148 |0a | NL | '\n' | | |148 |0a | NL | '\n' | | |||
+------+-----------+------------------+----------------------------+ | +------+-----------+------------------+----------------------------+ | |||
|149 |47 4d 54 30| TZ string | "GMT0BST,M3.5.0/1,M10.5.0" | | |149 |47 4d 54 30| TZ string | "GMT0BST,M3.5.0/1,M10.5.0" | | |||
skipping to change at page 51, line 20 ¶ | skipping to change at line 2335 ¶ | |||
string "-00" denotes unspecified local time. Added recommendation | string "-00" denotes unspecified local time. Added recommendation | |||
that this designation string should be used for timestamps | that this designation string should be used for timestamps | |||
excluded by TZif file truncation. | excluded by TZif file truncation. | |||
* Required support in version 2 files for all-year daylight saving | * Required support in version 2 files for all-year daylight saving | |||
time, using POSIX TZ strings with negative DST, as this is not an | time, using POSIX TZ strings with negative DST, as this is not an | |||
extension to POSIX (Section 3.3.1). | extension to POSIX (Section 3.3.1). | |||
* Applied erratum [Err6435]. | * Applied erratum [Err6435]. | |||
* Addressed errata [Err6426] and [Err6757] as well as several other | * Addressed errata [Err6426], [Err6757], and [Err7681] as well as | |||
errors in the examples. | several other errors in the examples. | |||
* Added additional interoperabilty considerations and common issues. | ||||
* Added an example of a TZif file truncated at the end. | ||||
(Appendix B.3) | ||||
* Added informational notes to Appendix B.4. | ||||
* Miscellaneous editorial changes. | ||||
Appendix D. Change Log | ||||
This section is to be removed by RFC Editor before publication. | ||||
D.1. Since rfc8536bis-14 | ||||
* Correct direction reversal with UT offsets -10 and +0530. | ||||
D.2. Since rfc8536bis-13 | ||||
* Referenced Section 8 of RFC 7808 in Security Considerations. | ||||
* Changed some terminology in Appendix A to be more inclusive. | ||||
* Added Internationalization Considerations section and clarified | ||||
the requirements for time zone designation strings. | ||||
* Stiffened the requirements for truncating TZif files. | ||||
D.3. Since rfc8536bis-12 | ||||
* Clarified the difference between the two media types in their IANA | ||||
registrations. | ||||
* Removed dates from references to dynamic content. | ||||
D.4. Since rfc8536bis-11 | ||||
* Clarified the consequences of not abiding by some SHOULDs. | ||||
* Miscellaneous editorial changes. | ||||
D.5. Since rfc8536bis-10 | ||||
* Clarified in IANA Considerations that this document is updating | ||||
the existing media types. | ||||
D.6. Since rfc8536bis-09 | ||||
* Clarified text of the example in the description of leap-second | ||||
table expiration. | ||||
D.7. Since rfc8536bis-08 | ||||
* Added an example of a TZif file truncated at the end. | ||||
* Fixed utoff value of LMT in Honolulu example. | ||||
* Updated "tz-link" URL. | ||||
* Miscellaneous editorial changes. | ||||
D.8. Since rfc8536bis-07 | ||||
* Miscellaneous editorial changes. | ||||
D.9. Since rfc8536bis-06 | ||||
* Moved the specification of an all-year daylight saving time TZ | ||||
string (Section 3.3.1), to its own section as it is NOT an | ||||
extension. | ||||
* Noted that should leap seconds to become discontinued that leap- | ||||
second tables SHOULD NOT expire. | ||||
* Updated "tz-link" title and reference. | ||||
* Updated reference to RFC 7231 to RFC 9110. | ||||
* Miscellaneous editorial changes. | ||||
D.10. Since rfc8536bis-05 | ||||
* Clarified the specification of an all-year daylight saving time TZ | ||||
string (Section 3.3.1), and changed the example to use negative | ||||
DST. | ||||
D.11. Since rfc8536bis-04 | ||||
* None. | ||||
D.12. Since rfc8536bis-03 | ||||
* Noted that erratum [Err6757] has been addressed. | ||||
* Added a definition of Leap Second, including UTC month. | ||||
D.13. Since rfc8536bis-02 | ||||
* Documented "-00" as meaning unspecified local time. | ||||
* Recommended that "-00" be used for timestamps that are unspecified | ||||
due to TZif file truncation. | ||||
D.14. Since rfc8536bis-01 | ||||
* Converted source from xml2rfc v2 to v3. | ||||
* Properly line-wrapped long TZ string values in examples (with no | ||||
added space). | ||||
* No other substantive changes. | ||||
D.15. Since rfc8536bis-00 | ||||
* Added specification of the version 4 format and the optional leap- | ||||
second table truncation and expiration, along with an example and | ||||
relevant interoperability considerations. | ||||
* Specified column widths in example tables. | ||||
* Noted that long TZ string values in examples are line-wrapped for | ||||
presentation purposes only. | ||||
D.16. Since RFC 8536 | ||||
* Applied erratum [Err6435]. | ||||
* Addressed erratum [Err6426] and several other errors in the | * Added additional interoperability considerations and common | |||
examples. | issues. | |||
* Clarified the specification of an all-year daylight saving time TZ | * Added an example of a TZif file truncated at the end | |||
string (Section 3.3.1), and changed the example to use negative | (Appendix B.3). | |||
DST. | ||||
* Added informational notes to Appendix B.4. | * Added informational notes to Appendix B.4. | |||
* Miscellaneous editorial changes. | * Miscellaneous editorial changes. | |||
* Added text obsoleting [RFC8536]. | ||||
* Added Changes from RFC 8536 (Appendix C). | ||||
* Added Tim Parenti as a contributor. | ||||
Acknowledgments | Acknowledgments | |||
The authors would like to thank the following individuals for | The authors thank the following individuals for contributing their | |||
contributing their ideas and support for writing this specification: | ideas and support for writing this specification: Michael Douglass, | |||
Michael Douglass, Ned Freed, Guy Harris, Eliot Lear, Alexey Melnikov, | Ned Freed, Guy Harris, Eliot Lear, Alexey Melnikov, and Tim Parenti. | |||
and Tim Parenti. | ||||
Authors' Addresses | Authors' Addresses | |||
Arthur David Olson | Arthur David Olson | |||
Email: arthurdavidolson@gmail.com | Email: arthurdavidolson@gmail.com | |||
Paul Eggert | Paul Eggert | |||
University of California, Los Angeles | University of California, Los Angeles | |||
Email: eggert@cs.ucla.edu | Email: eggert@cs.ucla.edu | |||
End of changes. 182 change blocks. | ||||
562 lines changed or deleted | 382 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |