| rfc8536.txt | draft-murchison-rfc8536bis-02.txt > | |||
|---|---|---|---|---|
| Internet Engineering Task Force (IETF) A. Olson | Internet Engineering Task Force (IETF) A.D. Olson | |||
| Request for Comments: 8536 | Internet-Draft | |||
| Category: Standards Track P. Eggert | Obsoletes: 8536 (if approved) P. Eggert | |||
| ISSN: 2070-1721 UCLA | Intended status: Standards Track UCLA | |||
| K. Murchison | Expires: 23 March 2022 K. Murchison | |||
| FastMail | Fastmail | |||
| February 2019 | 19 September 2021 | |||
| The Time Zone Information Format (TZif) | The Time Zone Information Format (TZif) | |||
| draft-murchison-rfc8536bis-02 | ||||
| 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. | ||||
| Status of This Memo | Status of This Memo | |||
| This is an Internet Standards Track document. | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | ||||
| This document is a product of the Internet Engineering Task Force | Internet-Drafts are working documents of the Internet Engineering | |||
| (IETF). It represents the consensus of the IETF community. It has | Task Force (IETF). Note that other groups may also distribute | |||
| received public review and has been approved for publication by the | working documents as Internet-Drafts. The list of current Internet- | |||
| Internet Engineering Steering Group (IESG). Further information on | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| Information about the current status of this document, any errata, | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and how to provide feedback on it may be obtained at | and may be updated, replaced, or obsoleted by other documents at any | |||
| https://www.rfc-editor.org/info/rfc8536. | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | ||||
| This Internet-Draft will expire on 23 March 2022. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2021 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 | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | license-info) in effect on the date of publication of this document. | |||
| publication of this document. Please review these documents | Please review these documents carefully, as they describe your rights | |||
| carefully, as they describe your rights and restrictions with respect | and restrictions with respect to this document. Code Components | |||
| to this document. Code Components extracted from this document must | extracted from this document must include Simplified BSD License text | |||
| include Simplified BSD License text as described in Section 4.e of | as described in Section 4.e of the Trust Legal Provisions and are | |||
| the Trust Legal Provisions and are provided without warranty as | provided without warranty as described in the Simplified BSD License. | |||
| described in the Simplified BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Conventions Used in This Document . . . . . . . . . . . . . . 3 | 2. Conventions Used in This Document . . . . . . . . . . . . . . 3 | |||
| 3. The Time Zone Information Format (TZif) . . . . . . . . . . . 5 | 3. The Time Zone Information Format (TZif) . . . . . . . . . . . 5 | |||
| 3.1. TZif Header . . . . . . . . . . . . . . . . . . . . . . . 6 | 3.1. TZif Header . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3.2. TZif Data Block . . . . . . . . . . . . . . . . . . . . . 8 | 3.2. TZif Data Block . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 3.3. TZif Footer . . . . . . . . . . . . . . . . . . . . . . . 12 | 3.3. TZif Footer . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 3.3.1. TZ String Extensions . . . . . . . . . . . . . . . . 13 | 3.3.1. TZ String Extensions . . . . . . . . . . . . . . . . 12 | |||
| 4. Interoperability Considerations . . . . . . . . . . . . . . . 13 | 4. Interoperability Considerations . . . . . . . . . . . . . . . 13 | |||
| 5. Use with the Time Zone Data Distribution Service . . . . . . 14 | 5. Use with the Time Zone Data Distribution Service . . . . . . 14 | |||
| 5.1. Truncating TZif Files . . . . . . . . . . . . . . . . . . 15 | 5.1. Truncating TZif Files . . . . . . . . . . . . . . . . . . 15 | |||
| 5.2. Example TZDIST Request for TZif Data . . . . . . . . . . 15 | 5.2. Example TZDIST Request for TZif Data . . . . . . . . . . 16 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 17 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 18 | |||
| 7. Privacy Considerations . . . . . . . . . . . . . . . . . . . 17 | 7. Privacy Considerations . . . . . . . . . . . . . . . . . . . 18 | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 8.1. application/tzif . . . . . . . . . . . . . . . . . . . . 17 | 8.1. application/tzif . . . . . . . . . . . . . . . . . . . . 18 | |||
| 8.2. application/tzif-leap . . . . . . . . . . . . . . . . . . 18 | 8.2. application/tzif-leap . . . . . . . . . . . . . . . . . . 19 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 19 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 19 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 21 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 20 | 9.2. Informative References . . . . . . . . . . . . . . . . . 22 | |||
| Appendix A. Common Interoperability Issues . . . . . . . . . . . 21 | Appendix A. Common Interoperability Issues . . . . . . . . . . . 22 | |||
| Appendix B. Example TZif Files . . . . . . . . . . . . . . . . . 23 | Appendix B. Example TZif Files . . . . . . . . . . . . . . . . . 25 | |||
| B.1. Version 1 File Representing UTC (with Leap Seconds) . . . 24 | B.1. Version 1 File Representing UTC (with Leap Seconds) . . . 25 | |||
| B.2. Version 2 File Representing Pacific/Honolulu . . . . . . 28 | B.2. Version 2 File Representing Pacific/Honolulu . . . . . . 31 | |||
| B.3. Truncated Version 3 File Representing Asia/Jerusalem . . 33 | B.3. Truncated Version 3 File Representing Asia/Jerusalem . . 38 | |||
| Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 34 | B.4. Truncated Version 4 File Representing America/New_York . 41 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 34 | Appendix C. Changes from RFC 8536 . . . . . . . . . . . . . . . 44 | |||
| Appendix D. Change Log . . . . . . . . . . . . . . . . . . . . . 44 | ||||
| D.1. Since rfc8536bis-01 . . . . . . . . . . . . . . . . . . . 44 | ||||
| D.2. Since rfc8536bis-00 . . . . . . . . . . . . . . . . . . . 44 | ||||
| D.3. Since RFC 8536 . . . . . . . . . . . . . . . . . . . . . 45 | ||||
| Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 45 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 45 | ||||
| 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 25 ¶ | skipping to change at page 3, line 16 ¶ | |||
| 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, | ||||
| new details, and errata fixes while keeping full compatibility with | ||||
| the interchange format of RFC 8536. Additionally, a new version of | ||||
| the format is defined. The changes from RFC 8536 are summarized in | ||||
| 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. | |||
| The following terms are used in this document (see "Sources for Time | The following terms are used in this document (see "Sources for Time | |||
| Zone and Daylight Saving Time Data" [tz-link] for more detailed | Zone and Daylight Saving Time Data" [tz-link] for more detailed | |||
| skipping to change at page 5, line 46 ¶ | skipping to change at page 5, line 44 ¶ | |||
| 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 3 extend the format by appending a second 44-octet | versions 2 and higher extend the format by appending a second | |||
| version 2+ header, a variable-length version 2+ data block containing | 44-octet version 2+ header, a variable-length version 2+ data block | |||
| eight-octet (64-bit) transition times and leap-second occurrences, | containing eight-octet (64-bit) transition times and leap-second | |||
| and a variable-length footer (Section 3.3). These 64-bit values can | occurrences, and a variable-length footer (Section 3.3). These | |||
| represent times approximately 292 billion years into the past or | 64-bit values can represent times approximately 292 billion years | |||
| 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 | |||
| order format (high-order octet first, otherwise known as big-endian), | order format (high-order octet first, otherwise known as big-endian), | |||
| with all bits significant. Signed integer values MUST be represented | with all bits significant. Signed integer values MUST be represented | |||
| using two's complement. | using two's complement. | |||
| A TZif file is structured as follows: | A TZif file is structured as follows: | |||
| Version 1 Versions 2 & 3 | Version 1 Versions 2+ | |||
| +-------------+ +-------------+ | +-------------+ +-------------+ | |||
| | Version 1 | | Version 1 | | | Version 1 | | Version 1 | | |||
| | Header | | Header | | | Header | | Header | | |||
| +-------------+ +-------------+ | +-------------+ +-------------+ | |||
| | Version 1 | | Version 1 | | | Version 1 | | Version 1 | | |||
| | Data Block | | Data Block | | | Data Block | | Data Block | | |||
| +-------------+ +-------------+ | +-------------+ +-------------+ | |||
| | Version 2+ | | | Version 2+ | | |||
| | Header | | | Header | | |||
| +-------------+ | +-------------+ | |||
| | Version 2+ | | | Version 2+ | | |||
| | Data Block | | | Data Block | | |||
| +-------------+ | +-------------+ | |||
| | Footer | | | Footer | | |||
| +-------------+ | +-------------+ | |||
| General Format of TZif Files | Figure 1: General Format of TZif Files | |||
| 3.1. TZif Header | 3.1. TZif Header | |||
| A TZif header is structured as follows (the lengths of multi-octet | A TZif header is structured as follows (the lengths of multi-octet | |||
| fields are shown in parentheses): | fields are shown in parentheses): | |||
| +---------------+---+ | +---------------+---+ | |||
| | magic (4) |ver| | | magic (4) |ver| | |||
| +---------------+---+---------------------------------------+ | +---------------+---+---------------------------------------+ | |||
| | [unused - reserved for future use] (15) | | | [unused - reserved for future use] (15) | | |||
| +---------------+---------------+---------------+-----------+ | +---------------+---------------+---------------+-----------+ | |||
| | isutcnt (4) | isstdcnt (4) | leapcnt (4) | | | isutcnt (4) | isstdcnt (4) | leapcnt (4) | | |||
| +---------------+---------------+---------------+ | +---------------+---------------+---------------+ | |||
| | timecnt (4) | typecnt (4) | charcnt (4) | | | timecnt (4) | typecnt (4) | charcnt (4) | | |||
| +---------------+---------------+---------------+ | +---------------+---------------+---------------+ | |||
| TZif Header | Figure 2: TZif Header | |||
| 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 header | |||
| and data block, a version 2+ header and data block, and a | and data block, a version 2+ header and data block, and a | |||
| footer. The TZ string in the footer (Section 3.3), if | footer. The TZ string in the footer (Section 3.3), if | |||
| nonempty, MUST strictly adhere to the requirements for the TZ | nonempty, 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. | portable character set as ASCII. The leap second table MUST | |||
| NOT be truncated at the start (Section 5.1), and MUST NOT | ||||
| contain an expiration time. | ||||
| '3' (0x33) Version 3 - The file MUST contain the version 1 header | '3' (0x33) Version 3 - The file MUST conform to all version 2 | |||
| and data block, a version 2+ header and data block, and a | requirements, except that any TZ string in the footer | |||
| footer. The TZ string in the footer (Section 3.3), if | (Section 3.3) MAY use the TZ string extensions described below | |||
| nonempty, MUST conform to POSIX requirements with ASCII | (Section 3.3.1). | |||
| encoding, except that it MAY use the TZ string extensions | ||||
| described below (Section 3.3.1). | '4' (0x34) Version 4 - The file MUST conform to all version 3 | |||
| requirements, except that the leap second table MAY be | ||||
| 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 | |||
| skipping to change at page 8, line 22 ¶ | skipping to change at page 8, line 26 ¶ | |||
| which is a series of items. The number of items in each series is | which is a series of items. The number of items in each series is | |||
| determined by the corresponding count field in the header. The total | determined by the corresponding count field in the header. The total | |||
| length of each element is calculated by multiplying the number of | length of each element is calculated by multiplying the number of | |||
| items by the size of each item. Therefore, implementations that do | items by the size of each item. Therefore, implementations that do | |||
| not wish to parse or use the version 1 data block can calculate its | not wish to parse or use the version 1 data block can calculate its | |||
| total length and skip directly to the header of the version 2+ data | total length and skip directly to the header of the version 2+ data | |||
| block. | block. | |||
| In the version 1 data block, time values are 32 bits (TIME_SIZE = 4 | In the version 1 data block, time values are 32 bits (TIME_SIZE = 4 | |||
| octets). In the version 2+ data block, present only in version 2 and | octets). In the version 2+ data block, present only in version 2 and | |||
| 3 files, time values are 64 bits (TIME_SIZE = 8 octets). | higher files, time values are 64 bits (TIME_SIZE = 8 octets). | |||
| The data block is structured as follows (the lengths of multi-octet | The data block is structured as follows (the lengths of multi-octet | |||
| fields are shown in parentheses): | fields are shown in parentheses): | |||
| +---------------------------------------------------------+ | +---------------------------------------------------------+ | |||
| | transition times (timecnt x TIME_SIZE) | | | transition times (timecnt x TIME_SIZE) | | |||
| +---------------------------------------------------------+ | +---------------------------------------------------------+ | |||
| | transition types (timecnt) | | | transition types (timecnt) | | |||
| +---------------------------------------------------------+ | +---------------------------------------------------------+ | |||
| | local time type records (typecnt x 6) | | | local time type records (typecnt x 6) | | |||
| +---------------------------------------------------------+ | +---------------------------------------------------------+ | |||
| | time zone designations (charcnt) | | | time zone designations (charcnt) | | |||
| +---------------------------------------------------------+ | +---------------------------------------------------------+ | |||
| | leap-second records (leapcnt x (TIME_SIZE + 4)) | | | leap-second records (leapcnt x (TIME_SIZE + 4)) | | |||
| +---------------------------------------------------------+ | +---------------------------------------------------------+ | |||
| | standard/wall indicators (isstdcnt) | | | standard/wall indicators (isstdcnt) | | |||
| +---------------------------------------------------------+ | +---------------------------------------------------------+ | |||
| | UT/local indicators (isutcnt) | | | UT/local indicators (isutcnt) | | |||
| +---------------------------------------------------------+ | +---------------------------------------------------------+ | |||
| 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 21 ¶ | skipping to change at page 10, line 21 ¶ | |||
| leap-second records: A series of eight- or twelve-octet records | leap-second records: A series of eight- or twelve-octet records | |||
| specifying the corrections that need to be applied to UTC in order | specifying the corrections that need to be applied to UTC in order | |||
| to determine TAI. The records are sorted by the occurrence time | to determine TAI. The records are sorted by the occurrence time | |||
| in strictly ascending order. The number of records is specified | in strictly ascending order. The number of records is specified | |||
| by the "leapcnt" field in the header. Each record has one of the | by the "leapcnt" field in the header. Each record has one of the | |||
| following structures (the lengths of multi-octet fields are shown | following structures (the lengths of multi-octet fields are shown | |||
| in parentheses): | in parentheses): | |||
| Version 1 Data Block: | Version 1 Data Block: | |||
| +---------------+---------------+ | ||||
| +---------------+---------------+ | | occur (4) | corr (4) | | |||
| | occur (4) | corr (4) | | +---------------+---------------+ | |||
| +---------------+---------------+ | ||||
| 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. | specifying the time at which a leap-second correction occurs or | |||
| The first value, if present, MUST be nonnegative, and each | at which the leap second table expires. The first value, if | |||
| later value MUST be at least 2419199 greater than the previous | present, MUST be nonnegative, and each leap second MUST occur | |||
| value. (This is 28 days' worth of seconds, minus a potential | at the end of a UTC calendar month. | |||
| negative leap second.) | ||||
| 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. The correction value in | LEAPCORR on or after the occurrence. If "leapcnt" is zero, | |||
| the first leap-second record, if present, MUST be either one | LEAPCORR is zero for all timestamps; otherwise, for timestamps | |||
| (1) or minus one (-1). The correction values in adjacent leap- | before the first occurrence time, LEAPCORR is zero if the first | |||
| second records MUST differ by exactly one (1). The value of | correction is one (1) or minus one (-1), and is unspecified | |||
| LEAPCORR is zero for timestamps that occur before the | otherwise (which can happen only in files truncated at the | |||
| occurrence time in the first leap-second record (or for all | start (Section 5.1)). | |||
| timestamps if there are no leap-second records). | ||||
| The first leap second is a positive leap second if and only if | ||||
| its correction is positive. Each correction after the first | ||||
| MUST differ from the previous correction by either one (1) for | ||||
| a positive leap second or minus one (-1) for a negative leap | ||||
| second, except that if there are two or more leap-second | ||||
| records the correction value of the last record MAY be the same | ||||
| as the second-to-last record, with the last record indicating | ||||
| the expiration time of the leap-second table. | ||||
| standard/wall indicators: A series of one-octet values indicating | standard/wall indicators: A series of one-octet values indicating | |||
| whether the transition times associated with local time types were | whether the transition times associated with local time types were | |||
| specified as standard time or wall-clock time. Each value MUST be | specified as standard time or wall-clock time. Each value MUST be | |||
| 0 or 1. A value of one (1) indicates standard time. The value | 0 or 1. A value of one (1) indicates standard time. The value | |||
| MUST be set to one (1) if the corresponding UT/local indicator is | MUST be set to one (1) if the corresponding UT/local indicator is | |||
| set to one (1). A value of zero (0) indicates wall time. The | set to one (1). A value of zero (0) indicates wall time. The | |||
| number of values is specified by the "isstdcnt" field in the | number of values is specified by the "isstdcnt" field in the | |||
| header. If "isstdcnt" is zero (0), all transition times | header. If "isstdcnt" is zero (0), all transition times | |||
| associated with local time types are assumed to be specified as | associated with local time types are assumed to be specified as | |||
| skipping to change at page 11, line 38 ¶ | skipping to change at page 11, line 44 ¶ | |||
| string in the footer if present and nonempty; otherwise, it is | string in the footer if present and nonempty; otherwise, it is | |||
| specified by time type 0. | specified by time type 0. | |||
| 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. Note that there are only | UT, standard time, or wall-clock time. Note that there are only | |||
| three combinations of the two indicators, given that the standard/ | three combinations of the two indicators, given that the standard/ | |||
| wall value MUST be one (1) if the UT/local value is one (1). This | wall 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 TZ string | (e.g. when calculating transition times for a simple POSIX-like TZ | |||
| 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 | |||
| fields are shown in parentheses): | fields are shown in parentheses): | |||
| +---+--------------------+---+ | +---+--------------------+---+ | |||
| | NL| TZ string (0...) |NL | | | NL| TZ string (0...) |NL | | |||
| +---+--------------------+---+ | +---+--------------------+---+ | |||
| TZif Footer | Figure 4: TZif Footer | |||
| The elements of the footer are defined as follows: | The elements of the footer are defined as follows: | |||
| 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 extensions described below (Section 3.3.1) in version 3 | utilizing extensions described below (Section 3.3.1) in version 3 | |||
| files. If the string is empty, the corresponding information is | and higher files. If the string is empty, the corresponding | |||
| not available. If the string is nonempty and one or more | information is not available. If the string is nonempty and one | |||
| transitions appear in the version 2+ data, the string MUST be | or more transitions appear in the version 2+ data, the string MUST | |||
| consistent with the last version 2+ transition. In other words, | be consistent with the last version 2+ transition. In other | |||
| evaluating the TZ string at the time of the last transition should | words, evaluating the TZ string at the time of the last transition | |||
| yield the same time type as was specified in the last transition. | should yield the same time type as was specified in the last | |||
| The string MUST NOT contain NUL octets or be NUL-terminated, and | transition. The string MUST NOT contain NUL octets or be | |||
| it SHOULD NOT begin with the ':' (colon) character. | NUL-terminated, and it SHOULD NOT begin with the ':' (colon) | |||
| character. | ||||
| The TZif footer is present only in version 2 and 3 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. TZ String Extensions | 3.3.1. TZ String Extensions | |||
| The TZ string in a version 3 TZif file MAY use the following | The TZ string in a version 3 or higher TZif file MAY use the | |||
| extensions to POSIX TZ strings. These extensions are described using | following extensions to POSIX TZ strings. These extensions are | |||
| the terminology of Section 8.3 of the "Base Definitions" volume of | described using the terminology of Section 8.3 of the "Base | |||
| [POSIX]. | Definitions" volume of [POSIX]. | |||
| o 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 -167 through 167 (-167 <= hh <= 167) instead of the POSIX- | from -167 through 167 (-167 <= hh <= 167) instead of the POSIX- | |||
| required unsigned values from 0 through 24. | required 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". | |||
| o DST is considered to be in effect all year if it starts January 1 | * DST is considered to be in effect all year if it starts January 1 | |||
| at 00:00 and ends December 31 at 24:00 plus the difference between | at 00:00 and ends December 31 at 24:00 plus the difference between | |||
| daylight saving and standard time, leaving no room for standard | daylight saving and standard time, leaving no room for standard | |||
| time in the calendar. | time in the calendar. | |||
| Example: EST5EDT,0/0,J365/25 | Example: EST5EDT,0/0,J365/25 | |||
| This represents a time zone that observes daylight saving time | This represents a time zone that observes daylight saving time | |||
| all year. It is 4 hours west of UT and is abbreviated "EDT". | all year. It is 4 hours west of UT and is abbreviated "EDT". | |||
| The "EST" is ignored. | ||||
| Example: XXX3EDT4,0/0,J365/23 | ||||
| This represents the same time zone as the previous example. It | ||||
| uses a DST further west of UTC than standard time. The "XXX" | ||||
| is ignored. | ||||
| 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. | |||
| o Version 1 files are considered a legacy format and SHOULD NOT be | * Version 1 files are considered a legacy format and SHOULD NOT be | |||
| generated, as they do not support transition times after the year | generated, as they do not support transition times after the year | |||
| 2038. | 2038. | |||
| o Implementations that only understand version 1 MUST ignore any | * Readers that understand only version 1 MUST ignore any data that | |||
| data that extends beyond the calculated end of the version 1 data | extends beyond the calculated end of the version 1 data block. | |||
| block. | ||||
| o Implementations SHOULD generate a version 3 file if TZ string | * Other than version 1, writers should generate the lowest version | |||
| extensions are necessary to accurately model transition times. | number needed by a file's data. For example, a writer should | |||
| Otherwise, version 2 files SHOULD be generated. | generate a version 4 file only if its leap second table either | |||
| expires or is truncated at the start. Likewise, a writer not | ||||
| generating a version 4 file should generate a version 3 file only | ||||
| if TZ string extensions are necessary to accurately model | ||||
| transition times. | ||||
| o The sequence of time changes defined by the version 1 header and | * To save space, writers of version 2+ files MAY output a | |||
| data block SHOULD be a contiguous sub-sequence of the time changes | placeholder version 1 data block with all counts zero except that | |||
| defined by the version 2+ header and data block, and by the | "typecnt" and "charcnt" are both one (1). If this is done, | |||
| footer. This guideline helps obsolescent version 1 readers agree | obsolescent version-1-only readers MUST interpret these files as | |||
| with current readers about timestamps within the contiguous sub- | lacking time changes and time zone abbreviations. | |||
| sequence. It also lets writers not supporting obsolescent readers | ||||
| use a "timecnt" of zero in the version 1 data block to save space. | ||||
| o Time zone designations SHOULD consist of at least three (3) and no | * Unless the version 1 data block is a placeholder, the sequence of | |||
| timestamps defined by the version 1 header and data block SHOULD | ||||
| be a contiguous sub-sequence of the timestamps defined by the | ||||
| version 2+ header and data block, and by the footer. This | ||||
| guideline helps obsolescent version 1 readers agree with current | ||||
| readers about timestamps within the contiguous sub-sequence. | ||||
| * When a TZif file contains a leap second table expiration time, | ||||
| TZif readers SHOULD either refuse to process post-expiration | ||||
| timestamps, or process them as if the expiration time did not | ||||
| exist (possibly with an error indication). | ||||
| * Time zone designations SHOULD 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 for compatibility with POSIX requirements | '-', and '+'. This is for compatibility with POSIX requirements | |||
| for time zone abbreviations. | for time zone abbreviations. | |||
| o When reading a version 2 or 3 file, implementations SHOULD ignore | * When reading a version 2 or higher file, readers SHOULD ignore the | |||
| the version 1 header and data block except for the purpose of | version 1 header and data block except for the purpose of skipping | |||
| skipping over them. | over them. | |||
| o Implementations SHOULD calculate the total lengths of the headers | * Readers SHOULD calculate the total lengths of the headers and data | |||
| and data blocks and check that they all fit within the actual file | blocks and check that they all fit within the actual file size, as | |||
| size, as part of a validity check for the file. | part of a validity check for the file. | |||
| o 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 8.2) to indicate that leap- | - "application/tzif-leap" (Section 8.2) to indicate that leap- | |||
| second records are included in the TZif data as necessary (none | second records are included in the TZif data as necessary (none | |||
| are necessary if the file is truncated to a range that precedes | are necessary if the file is truncated to a range that precedes | |||
| the first leap second). | the first leap second). | |||
| * "application/tzif" (Section 8.1) to indicate that leap-second | - "application/tzif" (Section 8.1) to indicate that leap-second | |||
| 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). | |||
| o Common interoperability issues and possible workarounds are | * Common interoperability issues and possible workarounds are | |||
| described in Appendix A. | described in Appendix A. | |||
| 5. Use with the Time Zone Data Distribution Service | 5. 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 | |||
| skipping to change at page 15, line 22 ¶ | skipping to change at page 15, line 32 ¶ | |||
| 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 | |||
| the version 2+ data a first transition time that is the start point | the version 2+ data a first transition time that is the start point | |||
| of the truncation range. As with untruncated TZif files, time type 0 | of the truncation range. As with untruncated TZif files, time type 0 | |||
| 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. | type of the first transition indicates local time thereafter. | |||
| When truncating the start of a TZif file containing leap-second | ||||
| records, the service MUST keep all leap-second records governing | ||||
| timestamps within the truncation range, even if the first such record | ||||
| precedes the start point of the truncation range. If the truncated | ||||
| leap second table is nonempty, its first record MUST have a positive | ||||
| 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. | does not indicate local time after the last transition. | |||
| All represented information that falls inside the truncation range | All represented information that falls inside the truncation range | |||
| MUST be the same as that represented by a corresponding untruncated | MUST be the same as that represented by a corresponding untruncated | |||
| TZif file. | TZif file. | |||
| skipping to change at page 16, line 17 ¶ | skipping to change at page 17, line 14 ¶ | |||
| >> Request << | >> Request << | |||
| GET /tzdist/capabilities HTTP/1.1 | GET /tzdist/capabilities HTTP/1.1 | |||
| Host: tz.example.com | Host: tz.example.com | |||
| >> Response << | >> Response << | |||
| HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
| Date: Fri, 01 Jun 2018 14:52:23 GMT | Date: Fri, 01 Jun 2018 14:52:23 GMT | |||
| Content-Type: application/json; charset="utf-8" | Content-Type: application/json | |||
| Content-Length: xxxx | Content-Length: xxxx | |||
| { | { | |||
| "version": 1, | "version": 1, | |||
| "info": { | "info": { | |||
| "primary-source": "IANA:2018e", | "primary-source": "IANA:2018e", | |||
| "formats": [ | "formats": [ | |||
| "text/calendar", | "text/calendar", | |||
| "application/tzif", | "application/tzif", | |||
| skipping to change at page 17, line 41 ¶ | skipping to change at page 18, line 41 ¶ | |||
| 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]. | |||
| 8. IANA Considerations | 8. IANA Considerations | |||
| 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. | |||
| 8.1. application/tzif | 8.1. application/tzif | |||
| Type name: application | Type name: | |||
| application | ||||
| Subtype name: tzif | Subtype name: | |||
| tzif | ||||
| Required parameters: none | Required parameters: | |||
| none | ||||
| Optional parameters: none | Optional parameters: | |||
| none | ||||
| Encoding considerations: binary | Encoding considerations: | |||
| binary | ||||
| Security considerations: See Section 6 of RFC 8536. | Security considerations: | |||
| See Section 6 of RFC XXXX. | ||||
| Interoperability considerations: See Section 4 of RFC 8536. | Interoperability considerations: | |||
| See Section 4 of RFC XXXX. | ||||
| Published specification: This specification. | Published specification: | |||
| This specification. | ||||
| Applications that use this media type: This media type is designed | Applications that use this media type: | |||
| for widespread use by applications that need to use or exchange | This media type is designed for widespread use by applications | |||
| time zone information, such as the Time Zone Information Compiler | that need to use or exchange time zone information, such as the | |||
| (zic) [ZIC] and the GNU C Library [GNU-C]. The Time Zone | Time Zone Information Compiler (zic) [ZIC] and the GNU C Library | |||
| Distribution Service [RFC7808] can directly use this media type. | [GNU-C]. The Time Zone Distribution Service [RFC7808] can | |||
| directly use this media type. | ||||
| Fragment identifier considerations: N/A | Fragment identifier considerations: | |||
| 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 Database mailing list <tz@iana.org> | Time Zone Database mailing list <tz@iana.org> | |||
| Intended usage: COMMON | Intended usage: | |||
| COMMON | ||||
| Restrictions on usage: N/A | Restrictions on usage: | |||
| N/A | ||||
| Author: See the "Authors' Addresses" section of RFC 8536. | Author: | |||
| See the "Authors' Addresses" section of RFC XXXX. | ||||
| Change controller: IETF | Change controller: | |||
| IETF | ||||
| 8.2. application/tzif-leap | 8.2. application/tzif-leap | |||
| Type name: application | Type name: | |||
| application | ||||
| Subtype name: tzif-leap | Subtype name: | |||
| tzif-leap | ||||
| Required parameters: none | Required parameters: | |||
| none | ||||
| Optional parameters: none | Optional parameters: | |||
| none | ||||
| Encoding considerations: binary | Encoding considerations: | |||
| binary | ||||
| Security considerations: See Section 6 of RFC 8536. | Security considerations: | |||
| See Section 6 of RFC XXXX. | ||||
| Interoperability considerations: See Section 4 of RFC 8536. | Interoperability considerations: | |||
| See Section 4 of RFC XXXX. | ||||
| Published specification: This specification. | Published specification: | |||
| This specification. | ||||
| Applications that use this media type: This media type is designed | Applications that use this media type: | |||
| for widespread use by applications that need to use or exchange | This media type is designed for widespread use by applications | |||
| time zone information, such as the Time Zone Information Compiler | that need to use or exchange time zone information, such as the | |||
| (zic) [ZIC] and the GNU C Library [GNU-C]. The Time Zone | Time Zone Information Compiler (zic) [ZIC] and the GNU C Library | |||
| Distribution Service [RFC7808] can directly use this media type. | [GNU-C]. The Time Zone Distribution Service [RFC7808] can | |||
| directly use this media type. | ||||
| Fragment identifier considerations: N/A | Fragment identifier considerations: | |||
| 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 Database mailing list <tz@iana.org> | Time Zone Database mailing list <tz@iana.org> | |||
| Intended usage: COMMON | Intended usage: | |||
| COMMON | ||||
| Restrictions on usage: N/A | Restrictions on usage: | |||
| N/A | ||||
| Author: See the "Authors' Addresses" section of RFC 8536. | Author: | |||
| See the "Authors' Addresses" section of RFC XXXX. | ||||
| Change controller: IETF | Change controller: | |||
| IETF | ||||
| 9. References | 9. References | |||
| 9.1. Normative References | 9.1. Normative References | |||
| [GNU-C] "The GNU C Library (glibc)", | [GNU-C] "The GNU C Library (glibc)", | |||
| <https://www.gnu.org/software/libc/>. | <https://www.gnu.org/software/libc/>. | |||
| [POSIX] IEEE, "Standard for Information Technology--Portable | [POSIX] IEEE, "Standard for Information Technology--Portable | |||
| Operating System Interface (POSIX(R)) Base | Operating System Interface (POSIX(R)) Base Specifications, | |||
| Specifications, Issue 7", IEEE 1003.1-2017, | Issue 7", IEEE 1003.1-2017, | |||
| DOI 10.1109/IEEESTD.2018.8277153, January 2018, | DOI 10.1109/IEEESTD.2018.8277153, 31 January 2018, | |||
| <http://pubs.opengroup.org/onlinepubs/9699919799/>. | <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>. | |||
| [RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type | [RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type | |||
| Specifications and Registration Procedures", BCP 13, | Specifications and Registration Procedures", BCP 13, | |||
| RFC 6838, DOI 10.17487/RFC6838, January 2013, | RFC 6838, DOI 10.17487/RFC6838, January 2013, | |||
| <https://www.rfc-editor.org/info/rfc6838>. | <https://www.rfc-editor.org/info/rfc6838>. | |||
| [RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext | [RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | |||
| Transfer Protocol (HTTP/1.1): Semantics and Content", | Protocol (HTTP/1.1): Semantics and Content", RFC 7231, | |||
| RFC 7231, DOI 10.17487/RFC7231, June 2014, | DOI 10.17487/RFC7231, June 2014, | |||
| <https://www.rfc-editor.org/info/rfc7231>. | <https://www.rfc-editor.org/info/rfc7231>. | |||
| [RFC7808] Douglass, M. and C. Daboo, "Time Zone Data Distribution | [RFC7808] Douglass, M. and C. Daboo, "Time Zone Data Distribution | |||
| Service", RFC 7808, DOI 10.17487/RFC7808, March 2016, | Service", RFC 7808, DOI 10.17487/RFC7808, March 2016, | |||
| <https://www.rfc-editor.org/info/rfc7808>. | <https://www.rfc-editor.org/info/rfc7808>. | |||
| [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>. | |||
| [ZIC] Kerrisk, M., "ZIC(8)", man-pages release 4.16, February | [ZIC] Kerrisk, M., "ZIC(8)", man-pages release 4.16, 25 February | |||
| 2010, <http://man7.org/linux/man-pages/man8/zic.8.html>. | 2010, <http://man7.org/linux/man-pages/man8/zic.8.html>. | |||
| 9.2. Informative References | 9.2. Informative References | |||
| [EGGERT-TZ] "History for tz", October 2018, | [EGGERT-TZ] | |||
| <https://github.com/eggert/tz/commits/master/tzfile.5>. | "History for tz", March 2021, | |||
| <https://github.com/eggert/tz/commits/main/tzfile.5>. | ||||
| [RFC5545] Desruisseaux, B., Ed., "Internet Calendaring and | [Err6426] RFC Errata, "Erratum ID 6426", RFC 8536, | |||
| Scheduling Core Object Specification (iCalendar)", | <https://www.rfc-editor.org/errata/eid6426>. | |||
| RFC 5545, DOI 10.17487/RFC5545, September 2009, | ||||
| <https://www.rfc-editor.org/info/rfc5545>. | ||||
| [RFC6557] Lear, E. and P. Eggert, "Procedures for Maintaining the | [Err6435] RFC Errata, "Erratum ID 6435", RFC 8536, | |||
| Time Zone Database", BCP 175, RFC 6557, | <https://www.rfc-editor.org/errata/eid6435>. | |||
| DOI 10.17487/RFC6557, February 2012, | ||||
| <https://www.rfc-editor.org/info/rfc6557>. | ||||
| [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) | [RFC5545] Desruisseaux, B., Ed., "Internet Calendaring and | |||
| Protocol Version 1.3", RFC 8446, DOI 10.17487/RFC8446, | Scheduling Core Object Specification (iCalendar)", | |||
| August 2018, <https://www.rfc-editor.org/info/rfc8446>. | RFC 5545, DOI 10.17487/RFC5545, September 2009, | |||
| <https://www.rfc-editor.org/info/rfc5545>. | ||||
| [tz-link] Eggert, P. and A. Olson, "Sources for Time Zone and | [RFC6557] Lear, E. and P. Eggert, "Procedures for Maintaining the | |||
| Daylight Saving Time Data", 2018, | Time Zone Database", BCP 175, RFC 6557, | |||
| <https://www.iana.org/time-zones/repository/ | DOI 10.17487/RFC6557, February 2012, | |||
| tz-link.html>. | <https://www.rfc-editor.org/info/rfc6557>. | |||
| [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | ||||
| Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | ||||
| <https://www.rfc-editor.org/info/rfc8446>. | ||||
| [RFC8536] Olson, A., Eggert, P., and K. Murchison, "The Time Zone | ||||
| Information Format (TZif)", RFC 8536, | ||||
| DOI 10.17487/RFC8536, February 2019, | ||||
| <https://www.rfc-editor.org/info/rfc8536>. | ||||
| [tz-link] Eggert, P. and A.D. Olson, "Sources for Time Zone and | ||||
| Daylight Saving Time Data", 2018, | ||||
| <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: | |||
| 1. to help TZif writers output files that avoid common pitfalls in | 1. to help TZif writers output files that avoid common pitfalls in | |||
| older or buggy TZif readers, | older or buggy TZif readers, | |||
| skipping to change at page 21, line 33 ¶ | skipping to change at page 23, line 20 ¶ | |||
| 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 new-version data | |||
| useful even for older-version readers. This section attempts to | 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 | |||
| documenting other common bugs in readers. | documenting other common bugs in readers. | |||
| Interoperability problems with TZif include the following: | Interoperability problems with TZif include the following: | |||
| o 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 native timestamps have only | version 2+ data, even if the reader's native timestamps have only | |||
| 32 bits. | 32 bits. | |||
| o Some readers designed for version 2 might mishandle timestamps | * Some readers designed for version 2 might mishandle timestamps | |||
| after a version 3 file's last transition, because they cannot | after a version 3 or higher file's last transition, because they | |||
| parse extensions to POSIX in the TZ-like string. As a partial | cannot parse extensions to POSIX in the TZ-like string. As a | |||
| workaround, a writer can output more transitions than necessary, | partial workaround, a writer can output more transitions than | |||
| so that only far-future timestamps are mishandled by version 2 | necessary, so that only far-future timestamps are mishandled by | |||
| readers. | version 2 readers. | |||
| o Some readers designed for version 2 do not support permanent | * Some readers designed for version 2 do not support permanent | |||
| daylight saving time -- e.g., a TZ string "EST5EDT,0/0,J365/25" | daylight saving time with transitions after 24:00 -- e.g., a TZ | |||
| denoting permanent Eastern Daylight Time (-04). As a partial | string "EST5EDT,0/0,J365/25" denoting permanent Eastern Daylight | |||
| workaround, a writer can substitute standard time for the next | Time (-04). As a workaround, a writer can substitute standard | |||
| time zone east -- e.g., "AST4" for permanent Atlantic Standard | time for two time zones east, e.g., "XXX3EDT4,0/0,J365/23" for a | |||
| Time (-04). | time zone with a never-used standard time (XXX, -03) and negative | |||
| daylight saving time (EDT, -04) all year. Alternatively, as a | ||||
| partial workaround a writer can substitute standard time for the | ||||
| next time zone east -- e.g., "AST4" for permanent Atlantic | ||||
| Standard Time (-04). | ||||
| o Some readers ignore the footer and instead predict future | * Some readers designed for version 2 or 3, and that require strict | |||
| conformance to RFC 8536, reject version 4 files whose leap second | ||||
| tables are truncated at the start or that end in expiration times. | ||||
| * 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. | |||
| o 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 dummy (no-op) first transition at an early | a writer can output a dummy (no-op) first transition at an early | |||
| time. | time. | |||
| o 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 not less than -2**31. Readers that support only | |||
| 32-bit timestamps are likely to be more prone to this problem, for | 32-bit timestamps are likely to be more prone to this problem, for | |||
| example, when they process 64-bit transitions, only some of which | example, when they process 64-bit transitions, only some of which | |||
| are representable in 32 bits. As a partial workaround, a writer | are representable in 32 bits. As a partial workaround, a writer | |||
| can output a dummy transition at timestamp -2**31. | can output a dummy transition at timestamp -2**31. | |||
| o 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. | |||
| o 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. | |||
| o 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. | |||
| o 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. | |||
| o 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 | |||
| locations like Ireland, which uses the equivalent of the POSIX TZ | locations like Ireland, which uses the equivalent of the POSIX TZ | |||
| 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 | ||||
| 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 | ||||
| with a positive leap second 78796801 (1972-06-30 23:59:60 UTC), | ||||
| some readers will map both 78796800 and 78796801 to 01:23:45 local | ||||
| time the next day instead of mapping the latter to 01:23:46, and | ||||
| they will map 78796815 to 01:23:59 instead of to 01:23:60. This | ||||
| has not yet been a practical problem, since no civil authority has | ||||
| observed such UTC offsets since leap seconds were introduced in | ||||
| 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. | |||
| o 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. | |||
| o 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 nonnegative timestamp. Readers that do not support negative | |||
| timestamps are likely to be more prone to this problem. | timestamps are likely to be more prone to this problem. | |||
| o Some readers mishandle time zone abbreviations like "-08" that | * Some readers mishandle time zone abbreviations like "-08" that | |||
| contain '+', '-', or digits. | contain '+', '-', or digits. | |||
| o Some readers mishandle UT offsets that are out of the traditional | * Some readers mishandle UT offsets that are out of the traditional | |||
| 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. | |||
| o 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". | |||
| o 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. | |||
| Note that these examples should only be considered informative. | Note that these examples should only be considered informative. | |||
| Although the example data entries are current as of the publication | Although the example data entries are current as of the publication | |||
| date of this document, the data will likely change in the future as | date of this document, the data will likely change in the future as | |||
| leap seconds are added and changes are made to civil time. | leap seconds are added and changes are made to civil time. | |||
| B.1. Version 1 File Representing UTC (with Leap Seconds) | B.1. Version 1 File Representing UTC (with Leap Seconds) | |||
| +-------+---------------+------------------+------------------------+ | +========+=============+==================+========================+ | |||
| | File | Data Octets | Record Name / | Field Value | | | File | Hexadecimal | Record Name / | Field Value | | |||
| | Offset| (hexadecimal) | 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) | | +--------+-------------+------------------+------------------------+ | |||
| | 005 | 00 00 00 00 | | | | | 004 | 00 | version | 0 (1) | | |||
| | | 00 00 00 00 | | | | +--------+-------------+------------------+------------------------+ | |||
| | | 00 00 00 00 | | | | | 005 | 00 00 00 00 | | | | |||
| | | 00 00 00 | | | | | | 00 00 00 00 | | | | |||
| | 020 | 00 00 00 01 | isutccnt | 1 | | | | 00 00 00 00 | | | | |||
| | 024 | 00 00 00 01 | isstdcnt | 1 | | | | 00 00 00 | | | | |||
| | 028 | 00 00 00 1b | isleapcnt | 27 | | +--------+-------------+------------------+------------------------+ | |||
| | 032 | 00 00 00 00 | timecnt | 0 | | | 020 | 00 00 00 01 | isutcnt | 1 | | |||
| | 036 | 00 00 00 01 | typecnt | 1 | | +--------+-------------+------------------+------------------------+ | |||
| | 040 | 00 00 00 04 | charcnt | 4 | | | 024 | 00 00 00 01 | isstdcnt | 1 | | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | | | localtimetype[0] | | | | 028 | 00 00 00 1b | leapcnt | 27 | | |||
| | 044 | 00 00 00 00 | utcoff | 00:00 | | +--------+-------------+------------------+------------------------+ | |||
| | 048 | 00 | isdst | 0 (no) | | | 032 | 00 00 00 00 | timecnt | 0 | | |||
| | 049 | 00 | desigidx | 0 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | | 036 | 00 00 00 01 | typecnt | 1 | | |||
| | 050 | 55 54 43 00 | designations[0] | "UTC" | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | | 040 | 00 00 00 04 | charcnt | 4 | | |||
| | | | leapsecond[0] | | | +--------+-------------+------------------+------------------------+ | |||
| | 054 | 04 b2 58 00 | occurrence | 78796800 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | (1972-06-30T23:59:60Z) | | | | | localtimetype[0] | | | |||
| | 058 | 00 00 00 01 | correction | 1 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | | 044 | 00 00 00 00 | utoff | 0 (+00:00) | | |||
| | | | leapsecond[1] | | | +--------+-------------+------------------+------------------------+ | |||
| | 062 | 05 a4 ec 01 | occurrence | 94694401 | | | 048 | 00 | isdst | 0 (no) | | |||
| | | | | (1972-12-31T23:59:60Z) | | +--------+-------------+------------------+------------------------+ | |||
| | 066 | 00 00 00 02 | correction | 2 | | | 049 | 00 | desigidx | 0 | | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | | | leapsecond[2] | | | +--------+-------------+------------------+------------------------+ | |||
| | 070 | 07 86 1f 82 | occurrence | 126230402 | | | 050 | 55 54 43 00 | designations[0] | "UTC" | | |||
| | | | | (1973-12-31T23:59:60Z) | | +--------+-------------+------------------+------------------------+ | |||
| | 074 | 00 00 00 03 | correction | 3 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | | | | leapsecond[0] | | | |||
| | | | leapsecond[3] | | | +--------+-------------+------------------+------------------------+ | |||
| | 078 | 09 67 53 03 | occurrence | 157766403 | | | 054 | 04 b2 58 00 | occurrence | 78796800 | | |||
| | | | | (1974-12-31T23:59:60Z) | | | | | | (1972-06-30T23:59:60Z) | | |||
| | 082 | 00 00 00 04 | correction | 4 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | | 058 | 00 00 00 01 | correction | 1 | | |||
| | | | leapsecond[4] | | | +--------+-------------+------------------+------------------------+ | |||
| | 086 | 0b 48 86 84 | occurrence | 189302404 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | (1975-12-31T23:59:60Z) | | | | | leapsecond[1] | | | |||
| | 090 | 00 00 00 05 | correction | 5 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | | 062 | 05 a4 ec 01 | occurrence | 94694401 | | |||
| | | | leapsecond[5] | | | | | | | (1972-12-31T23:59:60Z) | | |||
| | 094 | 0d 2b 0b 85 | occurrence | 220924805 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | (1976-12-31T23:59:60Z) | | | 066 | 00 00 00 02 | correction | 2 | | |||
| | 098 | 00 00 00 06 | correction | 6 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | | | leapsecond[6] | | | | | | leapsecond[2] | | | |||
| | 102 | 0f 0c 3f 06 | occurrence | 252460806 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | (1977-12-31T23:59:60Z) | | | 070 | 07 86 1f 82 | occurrence | 126230402 | | |||
| | 106 | 00 00 00 07 | correction | 7 | | | | | | (1973-12-31T23:59:60Z) | | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | | | leapsecond[7] | | | | 074 | 00 00 00 03 | correction | 3 | | |||
| | 110 | 10 ed 72 87 | occurrence | 283996807 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | (1978-12-31T23:59:60Z) | | +--------+-------------+------------------+------------------------+ | |||
| | 114 | 00 00 00 08 | correction | 8 | | | | | leapsecond[3] | | | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | | | leapsecond[8] | | | | 078 | 09 67 53 03 | occurrence | 157766403 | | |||
| | 118 | 12 ce a6 08 | occurrence | 315532808 | | | | | | (1974-12-31T23:59:60Z) | | |||
| | | | | (1979-12-31T23:59:60Z) | | +--------+-------------+------------------+------------------------+ | |||
| | 122 | 00 00 00 09 | correction | 9 | | | 082 | 00 00 00 04 | correction | 4 | | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | | | leapsecond[9] | | | +--------+-------------+------------------+------------------------+ | |||
| | 126 | 15 9f ca 89 | occurrence | 362793609 | | | | | leapsecond[4] | | | |||
| | | | | (1981-06-30T23:59:60Z) | | +--------+-------------+------------------+------------------------+ | |||
| | 130 | 00 00 00 0a | correction | 10 | | | 086 | 0b 48 86 84 | occurrence | 189302404 | | |||
| | | | | | | | | | | (1975-12-31T23:59:60Z) | | |||
| | | | leapsecond[10] | | | +--------+-------------+------------------+------------------------+ | |||
| | 134 | 17 80 fe 0a | occurrence | 394329610 | | | 090 | 00 00 00 05 | correction | 5 | | |||
| | | | | (1982-06-30T23:59:60Z) | | +--------+-------------+------------------+------------------------+ | |||
| | 138 | 00 00 00 0b | correction | 11 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | | | | leapsecond[5] | | | |||
| | | | leapsecond[11] | | | +--------+-------------+------------------+------------------------+ | |||
| | 142 | 19 62 31 8b | occurrence | 425865611 | | | 094 | 0d 2b 0b 85 | occurrence | 220924805 | | |||
| | | | | (1983-06-30T23:59:60Z) | | | | | | (1976-12-31T23:59:60Z) | | |||
| | 146 | 00 00 00 0c | correction | 12 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | | 098 | 00 00 00 06 | correction | 6 | | |||
| | | | leapsecond[12] | | | +--------+-------------+------------------+------------------------+ | |||
| | 150 | 1d 25 ea 0c | occurrence | 489024012 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | (1985-06-30T23:59:60Z) | | | | | leapsecond[6] | | | |||
| | 154 | 00 00 00 0d | correction | 13 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | | 102 | 0f 0c 3f 06 | occurrence | 252460806 | | |||
| | | | leapsecond[13] | | | | | | | (1977-12-31T23:59:60Z) | | |||
| | 158 | 21 da e5 0d | occurrence | 567993613 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | (1987-12-31T23:59:60Z) | | | 106 | 00 00 00 07 | correction | 7 | | |||
| | 162 | 00 00 00 0e | correction | 14 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | | | leapsecond[14] | | | | | | leapsecond[7] | | | |||
| | 166 | 25 9e 9d 8e | occurrence | 631152014 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | (1989-12-31T23:59:60Z) | | | 110 | 10 ed 72 87 | occurrence | 283996807 | | |||
| | 170 | 00 00 00 0f | correction | 15 | | | | | | (1978-12-31T23:59:60Z) | | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | | | leapsecond[15] | | | | 114 | 00 00 00 08 | correction | 8 | | |||
| | 174 | 27 7f d1 0f | occurrence | 662688015 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | (1990-12-31T23:59:60Z) | | +--------+-------------+------------------+------------------------+ | |||
| | 178 | 00 00 00 10 | correction | 16 | | | | | leapsecond[8] | | | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | | | leapsecond[16] | | | | 118 | 12 ce a6 08 | occurrence | 315532808 | | |||
| | 182 | 2a 50 f5 90 | occurrence | 709948816 | | | | | | (1979-12-31T23:59:60Z) | | |||
| | | | | (1992-06-30T23:59:60Z) | | +--------+-------------+------------------+------------------------+ | |||
| | 186 | 00 00 00 11 | correction | 17 | | | 122 | 00 00 00 09 | correction | 9 | | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | | | leapsecond[17] | | | +--------+-------------+------------------+------------------------+ | |||
| | 190 | 2c 32 29 11 | occurrence | 741484817 | | | | | leapsecond[9] | | | |||
| | | | | (1993-06-30T23:59:60Z) | | +--------+-------------+------------------+------------------------+ | |||
| | 194 | 00 00 00 12 | correction | 18 | | | 126 | 15 9f ca 89 | occurrence | 362793609 | | |||
| | | | | | | | | | | (1981-06-30T23:59:60Z) | | |||
| | | | leapsecond[18] | | | +--------+-------------+------------------+------------------------+ | |||
| | 198 | 2e 13 5c 92 | occurrence | 773020818 | | | 130 | 00 00 00 0a | correction | 10 | | |||
| | | | | (1994-06-30T23:59:60Z) | | +--------+-------------+------------------+------------------------+ | |||
| | 202 | 00 00 00 13 | correction | 19 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | | | | leapsecond[10] | | | |||
| | | | leapsecond[19] | | | +--------+-------------+------------------+------------------------+ | |||
| | 206 | 30 e7 24 13 | occurrence | 820454419 | | | 134 | 17 80 fe 0a | occurrence | 394329610 | | |||
| | | | | (1995-12-31T23:59:60Z) | | | | | | (1982-06-30T23:59:60Z) | | |||
| | 210 | 00 00 00 14 | correction | 20 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | | 138 | 00 00 00 0b | correction | 11 | | |||
| | | | leapsecond[20] | | | +--------+-------------+------------------+------------------------+ | |||
| | 214 | 33 b8 48 94 | occurrence | 867715220 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | (1997-06-30T23:59:60Z) | | | | | leapsecond[11] | | | |||
| | 218 | 00 00 00 15 | correction | 21 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | | 142 | 19 62 31 8b | occurrence | 425865611 | | |||
| | | | leapsecond[21] | | | | | | | (1983-06-30T23:59:60Z) | | |||
| | 222 | 36 8c 10 15 | occurrence | 915148821 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | (1998-12-31T23:59:60Z) | | | 146 | 00 00 00 0c | correction | 12 | | |||
| | 226 | 00 00 00 16 | correction | 22 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | | | leapsecond[22] | | | | | | leapsecond[12] | | | |||
| | 230 | 43 b7 1b 96 | occurrence | 1136073622 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | (2005-12-31T23:59:60Z) | | | 150 | 1d 25 ea 0c | occurrence | 489024012 | | |||
| | 234 | 00 00 00 17 | correction | 23 | | | | | | (1985-06-30T23:59:60Z) | | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | | | leapsecond[23] | | | | 154 | 00 00 00 0d | correction | 13 | | |||
| | 238 | 49 5c 07 97 | occurrence | 1230768023 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | (2008-12-31T23:59:60Z) | | +--------+-------------+------------------+------------------------+ | |||
| | 242 | 00 00 00 18 | correction | 24 | | | | | leapsecond[13] | | | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | | | leapsecond[24] | | | | 158 | 21 da e5 0d | occurrence | 567993613 | | |||
| | 246 | 4f ef 93 18 | occurrence | 1341100824 | | | | | | (1987-12-31T23:59:60Z) | | |||
| | | | | (2012-06-30T23:59:60Z) | | +--------+-------------+------------------+------------------------+ | |||
| | 250 | 00 00 00 19 | correction | 25 | | | 162 | 00 00 00 0e | correction | 14 | | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | | | leapsecond[25] | | | +--------+-------------+------------------+------------------------+ | |||
| | 254 | 55 93 2d 99 | occurrence | 1435708825 | | | | | leapsecond[14] | | | |||
| | | | | (2015-06-30T23:59:60Z) | | +--------+-------------+------------------+------------------------+ | |||
| | 258 | 00 00 00 1a | correction | 26 | | | 166 | 25 9e 9d 8e | occurrence | 631152014 | | |||
| | | | | | | | | | | (1989-12-31T23:59:60Z) | | |||
| | | | leapsecond[26] | | | +--------+-------------+------------------+------------------------+ | |||
| | 262 | 58 68 46 9a | occurrence | 1483228826 | | | 170 | 00 00 00 0f | correction | 15 | | |||
| | | | | (2016-12-31T23:59:60Z) | | +--------+-------------+------------------+------------------------+ | |||
| | 266 | 00 00 00 1b | correction | 27 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | | | | leapsecond[15] | | | |||
| | 270 | 00 | UT/local[0] | 0 (local) | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | | 174 | 27 7f d1 0f | occurrence | 662688015 | | |||
| | 271 | 00 | standard/wall[0] | 0 (wall) | | | | | | (1990-12-31T23:59:60Z) | | |||
| +-------+---------------+------------------+------------------------+ | +--------+-------------+------------------+------------------------+ | |||
| | 178 | 00 00 00 10 | correction | 16 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | | | leapsecond[16] | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 182 | 2a 50 f5 90 | occurrence | 709948816 | | ||||
| | | | | (1992-06-30T23:59:60Z) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 186 | 00 00 00 11 | correction | 17 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | | | leapsecond[17] | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 190 | 2c 32 29 11 | occurrence | 741484817 | | ||||
| | | | | (1993-06-30T23:59:60Z) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 194 | 00 00 00 12 | correction | 18 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | | | leapsecond[18] | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 198 | 2e 13 5c 92 | occurrence | 773020818 | | ||||
| | | | | (1994-06-30T23:59:60Z) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 202 | 00 00 00 13 | correction | 19 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | | | leapsecond[19] | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 206 | 30 e7 24 13 | occurrence | 820454419 | | ||||
| | | | | (1995-12-31T23:59:60Z) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 210 | 00 00 00 14 | correction | 20 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | | | leapsecond[20] | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 214 | 33 b8 48 94 | occurrence | 867715220 | | ||||
| | | | | (1997-06-30T23:59:60Z) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 218 | 00 00 00 15 | correction | 21 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | | | leapsecond[21] | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 222 | 36 8c 10 15 | occurrence | 915148821 | | ||||
| | | | | (1998-12-31T23:59:60Z) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 226 | 00 00 00 16 | correction | 22 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | | | leapsecond[22] | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 230 | 43 b7 1b 96 | occurrence | 1136073622 | | ||||
| | | | | (2005-12-31T23:59:60Z) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 234 | 00 00 00 17 | correction | 23 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | | | leapsecond[23] | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 238 | 49 5c 07 97 | occurrence | 1230768023 | | ||||
| | | | | (2008-12-31T23:59:60Z) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 242 | 00 00 00 18 | correction | 24 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | | | leapsecond[24] | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 246 | 4f ef 93 18 | occurrence | 1341100824 | | ||||
| | | | | (2012-06-30T23:59:60Z) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 250 | 00 00 00 19 | correction | 25 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | | | leapsecond[25] | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 254 | 55 93 2d 99 | occurrence | 1435708825 | | ||||
| | | | | (2015-06-30T23:59:60Z) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 258 | 00 00 00 1a | correction | 26 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | | | leapsecond[26] | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 262 | 58 68 46 9a | occurrence | 1483228826 | | ||||
| | | | | (2016-12-31T23:59:60Z) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 266 | 00 00 00 1b | correction | 27 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 270 | 00 | standard/wall[0] | 0 (wall) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 271 | 00 | UT/local[0] | 0 (local) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| Table 1 | ||||
| To determine TAI corresponding to 2000-01-01T00:00:00Z | To determine TAI corresponding to 2000-01-01T00:00:00Z | |||
| (UNIX time = 946684800), the following procedure would be followed: | (UNIX time = 946684800), the following procedure would be followed: | |||
| 1. Find the latest leap-second occurrence prior to the time of | 1. Find the latest leap-second occurrence prior to the time of | |||
| interest (leapsecond[21]) and note the correction value | interest (leapsecond[21]) and note the correction value | |||
| (LEAPCORR = 22). | (LEAPCORR = 22). | |||
| 2. Add LEAPCORR + 10 to the time of interest to yield TAI of | 2. Add LEAPCORR + 10 to the time of interest to yield TAI of | |||
| 2000-01-01T00:00:32. | 2000-01-01T00:00:32. | |||
| 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) | | +--------+-------------+------------------+------------------------+ | |||
| | 005 | 00 00 00 00 | | | | | 004 | 32 | version | '2' (2) | | |||
| | | 00 00 00 00 | | | | +--------+-------------+------------------+------------------------+ | |||
| | | 00 00 00 00 | | | | | 005 | 00 00 00 00 | | | | |||
| | | 00 00 00 | | | | | | 00 00 00 00 | | | | |||
| | 020 | 00 00 00 06 | isutccnt | 6 | | | | 00 00 00 00 | | | | |||
| | 024 | 00 00 00 06 | isstdcnt | 6 | | | | 00 00 00 | | | | |||
| | 028 | 00 00 00 00 | isleapcnt | 0 | | +--------+-------------+------------------+------------------------+ | |||
| | 032 | 00 00 00 07 | timecnt | 7 | | | 020 | 00 00 00 06 | isutcnt | 6 | | |||
| | 036 | 00 00 00 06 | typecnt | 6 | | +--------+-------------+------------------+------------------------+ | |||
| | 040 | 00 00 00 14 | charcnt | 20 | | | 024 | 00 00 00 06 | isstdcnt | 6 | | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | 044 | 80 00 00 00 | trans time[0] | -2147483648 | | | 028 | 00 00 00 00 | leapcnt | 0 | | |||
| | | | | (1901-12-13T20:45:52Z) | | +--------+-------------+------------------+------------------------+ | |||
| | 048 | bb 05 43 48 | trans time[1] | -1157283000 | | | 032 | 00 00 00 07 | timecnt | 7 | | |||
| | | | | (1933-04-30T12:30:00Z) | | +--------+-------------+------------------+------------------------+ | |||
| | 052 | bb 21 71 58 | trans time[2] | -1155436200 | | | 036 | 00 00 00 06 | typecnt | 6 | | |||
| | | | | (1933-05-21T21:30:00Z) | | +--------+-------------+------------------+------------------------+ | |||
| | 056 | cb 89 3d c8 | trans time[3] | -880198200 | | | 040 | 00 00 00 14 | charcnt | 20 | | |||
| | | | | (1942-02-09T12:30:00Z) | | +--------+-------------+------------------+------------------------+ | |||
| | 060 | d2 23 f4 70 | trans time[4] | -769395600 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | (1945-08-14T23:00:00Z) | | | 044 | 80 00 00 00 | trans time[0] | -2147483648 | | |||
| | 064 | d2 61 49 38 | trans time[5] | -765376200 | | | | | | (1901-12-13T20:45:52Z) | | |||
| | | | | (1945-09-30T11:30:00Z) | | +--------+-------------+------------------+------------------------+ | |||
| | 068 | d5 8d 73 48 | trans time[6] | -712150200 | | | 048 | bb 05 43 48 | trans time[1] | -1157283000 | | |||
| | | | | (1947-06-08T12:30:00Z) | | | | | | (1933-04-30T12:30:00Z) | | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | 072 | 01 | trans type[0] | 1 | | | 052 | bb 21 71 58 | trans time[2] | -1155436200 | | |||
| | 073 | 02 | trans type[1] | 2 | | | | | | (1933-05-21T21:30:00Z) | | |||
| | 074 | 01 | trans type[2] | 1 | | +--------+-------------+------------------+------------------------+ | |||
| | 075 | 03 | trans type[3] | 3 | | | 056 | cb 89 3d c8 | trans time[3] | -880198200 | | |||
| | 076 | 04 | trans type[4] | 4 | | | | | | (1942-02-09T12:30:00Z) | | |||
| | 077 | 01 | trans type[5] | 1 | | +--------+-------------+------------------+------------------------+ | |||
| | 078 | 05 | trans type[6] | 5 | | | 060 | d2 23 f4 70 | trans time[4] | -769395600 | | |||
| | | | | | | | | | | (1945-08-14T23:00:00Z) | | |||
| | | | localtimetype[0] | | | +--------+-------------+------------------+------------------------+ | |||
| | 079 | ff ff 6c 02 | utcoff | -37886 (-10:21:26) | | | 064 | d2 61 49 38 | trans time[5] | -765376200 | | |||
| | 083 | 00 | isdst | 0 (no) | | | | | | (1945-09-30T11:30:00Z) | | |||
| | 084 | 00 | desigidx | 0 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | | 068 | d5 8d 73 48 | trans time[6] | -712150200 | | |||
| | | | localtimetype[1] | | | | | | | (1947-06-08T12:30:00Z) | | |||
| | 085 | ff ff 6c 58 | utcoff | -37800 (-10:30) | | +--------+-------------+------------------+------------------------+ | |||
| | 089 | 00 | isdst | 0 (no) | | +--------+-------------+------------------+------------------------+ | |||
| | 090 | 04 | desigidx | 4 | | | 072 | 01 | trans type[0] | 1 | | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | | | localtimetype[2] | | | | 073 | 02 | trans type[1] | 2 | | |||
| | 091 | ff ff 7a 68 | utcoff | -34200 (-09:30) | | +--------+-------------+------------------+------------------------+ | |||
| | 095 | 01 | isdst | 1 (yes) | | | 074 | 01 | trans type[2] | 1 | | |||
| | 096 | 08 | desigidx | 8 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | | 075 | 03 | trans type[3] | 3 | | |||
| | | | localtimetype[3] | | | +--------+-------------+------------------+------------------------+ | |||
| | 097 | ff ff 7a 68 | utcoff | -34200 (-09:30) | | | 076 | 04 | trans type[4] | 4 | | |||
| | 101 | 01 | isdst | 1 (yes) | | +--------+-------------+------------------+------------------------+ | |||
| | 102 | 0c | desigidx | 12 | | | 077 | 01 | trans type[5] | 1 | | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | | | localtimetype[4] | | | | 078 | 05 | trans type[6] | 5 | | |||
| | 103 | ff ff 7a 68 | utcoff | -34200 (-09:30) | | +--------+-------------+------------------+------------------------+ | |||
| | 107 | 01 | isdst | 1 (yes) | | +--------+-------------+------------------+------------------------+ | |||
| | 108 | 10 | desigidx | 16 | | | | | localtimetype[0] | | | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | | | localtimetype[5] | | | | 079 | ff ff 6c 02 | utoff | -37886 (-10:21:26) | | |||
| | 109 | ff ff 73 60 | utcoff | -36000 (-10:00) | | +--------+-------------+------------------+------------------------+ | |||
| | 113 | 00 | isdst | 0 (no) | | | 083 | 00 | isdst | 0 (no) | | |||
| | 114 | 04 | desigidx | 4 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | | 084 | 00 | desigidx | 0 | | |||
| | 115 | 4c 4d 54 00 | designations[0] | "LMT" | | +--------+-------------+------------------+------------------------+ | |||
| | 119 | 48 53 54 00 | designations[4] | "HST" | | +--------+-------------+------------------+------------------------+ | |||
| | 123 | 48 44 54 00 | designations[8] | "HDT" | | | | | localtimetype[1] | | | |||
| | 127 | 48 57 54 00 | designations[12] | "HWT" | | +--------+-------------+------------------+------------------------+ | |||
| | 131 | 48 50 54 00 | designations[16] | "HPT" | | | 085 | ff ff 6c 58 | utoff | -37800 (-10:30) | | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | 135 | 00 | UT/local[0] | 1 (UT) | | | 089 | 00 | isdst | 0 (no) | | |||
| | 136 | 00 | UT/local[1] | 0 (local) | | +--------+-------------+------------------+------------------------+ | |||
| | 137 | 00 | UT/local[2] | 0 (local) | | | 090 | 04 | desigidx | 4 | | |||
| | 138 | 00 | UT/local[3] | 0 (local) | | +--------+-------------+------------------+------------------------+ | |||
| | 139 | 01 | UT/local[4] | 1 (UT) | | +--------+-------------+------------------+------------------------+ | |||
| | 140 | 00 | UT/local[5] | 0 (local) | | | | | localtimetype[2] | | | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | 141 | 00 | standard/wall[0] | 1 (standard) | | | 091 | ff ff 7a 68 | utoff | -34200 (-09:30) | | |||
| | 142 | 00 | standard/wall[1] | 0 (wall) | | +--------+-------------+------------------+------------------------+ | |||
| | 143 | 00 | standard/wall[2] | 0 (wall) | | | 095 | 01 | isdst | 1 (yes) | | |||
| | 144 | 00 | standard/wall[3] | 0 (wall) | | +--------+-------------+------------------+------------------------+ | |||
| | 145 | 01 | standard/wall[4] | 1 (standard) | | | 096 | 08 | desigidx | 8 | | |||
| | 146 | 00 | standard/wall[5] | 0 (wall) | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | 147 | 54 5a 69 66 | magic | "TZif" | | | | | localtimetype[3] | | | |||
| | 151 | 32 | version | '2' (2) | | +--------+-------------+------------------+------------------------+ | |||
| | 152 | 00 00 00 00 | | | | | 097 | ff ff 7a 68 | utoff | -34200 (-09:30) | | |||
| | | 00 00 00 00 | | | | +--------+-------------+------------------+------------------------+ | |||
| | | 00 00 00 00 | | | | | 101 | 01 | isdst | 1 (yes) | | |||
| | | 00 00 00 | | | | +--------+-------------+------------------+------------------------+ | |||
| | 167 | 00 00 00 06 | isutccnt | 6 | | | 102 | 0c | desigidx | 12 | | |||
| | 171 | 00 00 00 06 | isstdcnt | 6 | | +--------+-------------+------------------+------------------------+ | |||
| | 175 | 00 00 00 00 | isleapcnt | 0 | | +--------+-------------+------------------+------------------------+ | |||
| | 179 | 00 00 00 07 | timecnt | 7 | | | | | localtimetype[4] | | | |||
| | 183 | 00 00 00 06 | typecnt | 6 | | +--------+-------------+------------------+------------------------+ | |||
| | 187 | 00 00 00 14 | charcnt | 20 | | | 103 | ff ff 7a 68 | utoff | -34200 (-09:30) | | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | 191 | ff ff ff ff | trans time[0] | -2334101314 | | | 107 | 01 | isdst | 1 (yes) | | |||
| | | 74 e0 70 be | | (1896-01-13T22:31:26Z) | | +--------+-------------+------------------+------------------------+ | |||
| | 199 | ff ff ff ff | trans time[1] | -1157283000 | | | 108 | 10 | desigidx | 16 | | |||
| | | bb 05 43 48 | | (1933-04-30T12:30:00Z) | | +--------+-------------+------------------+------------------------+ | |||
| | 207 | ff ff ff ff | trans time[2] | -1155436200 | | +--------+-------------+------------------+------------------------+ | |||
| | | bb 21 71 58 | | (1933-05-21T21:30:00Z) | | | | | localtimetype[5] | | | |||
| | 215 | ff ff ff ff | trans time[3] | -880198200 | | +--------+-------------+------------------+------------------------+ | |||
| | | cb 89 3d c8 | | (1942-02-09T12:30:00Z) | | | 109 | ff ff 73 60 | utoff | -36000 (-10:00) | | |||
| | 223 | ff ff ff ff | trans time[4] | -769395600 | | +--------+-------------+------------------+------------------------+ | |||
| | | d2 23 f4 70 | | (1945-08-14T23:00:00Z) | | | 113 | 00 | isdst | 0 (no) | | |||
| | 231 | ff ff ff ff | trans time[5] | -765376200 | | +--------+-------------+------------------+------------------------+ | |||
| | | d2 61 49 38 | | (1945-09-30T11:30:00Z) | | | 114 | 04 | desigidx | 4 | | |||
| | 239 | ff ff ff ff | trans time[6] | -712150200 | | +--------+-------------+------------------+------------------------+ | |||
| | | d5 8d 73 48 | | (1947-06-08T12:30:00Z) | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | | 115 | 4c 4d 54 00 | designations[0] | "LMT" | | |||
| | 247 | 01 | trans type[0] | 1 | | +--------+-------------+------------------+------------------------+ | |||
| | 248 | 02 | trans type[1] | 2 | | | 119 | 48 53 54 00 | designations[4] | "HST" | | |||
| | 249 | 01 | trans type[2] | 1 | | +--------+-------------+------------------+------------------------+ | |||
| | 250 | 03 | trans type[3] | 3 | | | 123 | 48 44 54 00 | designations[8] | "HDT" | | |||
| | 251 | 04 | trans type[4] | 4 | | +--------+-------------+------------------+------------------------+ | |||
| | 252 | 01 | trans type[5] | 1 | | | 127 | 48 57 54 00 | designations[12] | "HWT" | | |||
| | 253 | 05 | trans type[6] | 5 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | | 131 | 48 50 54 00 | designations[16] | "HPT" | | |||
| | | | localtimetype[0] | | | +--------+-------------+------------------+------------------------+ | |||
| | 254 | ff ff 6c 02 | utcoff | -37886 (-10:21:26) | | +--------+-------------+------------------+------------------------+ | |||
| | 258 | 00 | isdst | 0 (no) | | | 135 | 00 | standard/wall[0] | 0 (wall) | | |||
| | 259 | 00 | desigidx | 0 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | | 136 | 00 | standard/wall[1] | 0 (wall) | | |||
| | | | localtimetype[1] | | | +--------+-------------+------------------+------------------------+ | |||
| | 260 | ff ff 6c 58 | utcoff | -37800 (-10:30) | | | 137 | 00 | standard/wall[2] | 0 (wall) | | |||
| | 264 | 00 | isdst | 0 (no) | | +--------+-------------+------------------+------------------------+ | |||
| | 265 | 04 | desigidx | 4 | | | 138 | 00 | standard/wall[3] | 0 (wall) | | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | | | localtimetype[2] | | | | 139 | 01 | standard/wall[4] | 1 (standard) | | |||
| | 266 | ff ff 7a 68 | utcoff | -34200 (-09:30) | | +--------+-------------+------------------+------------------------+ | |||
| | 270 | 01 | isdst | 1 (yes) | | | 140 | 00 | standard/wall[5] | 0 (wall) | | |||
| | 271 | 08 | desigidx | 8 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | | | localtimetype[3] | | | | 141 | 00 | UT/local[0] | 0 (local) | | |||
| | 272 | ff ff 7a 68 | utcoff | -34200 (-09:30) | | +--------+-------------+------------------+------------------------+ | |||
| | 276 | 01 | isdst | 1 (yes) | | | 142 | 00 | UT/local[1] | 0 (local) | | |||
| | 277 | 0c | desigidx | 12 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | | 143 | 00 | UT/local[2] | 0 (local) | | |||
| | | | localtimetype[4] | | | +--------+-------------+------------------+------------------------+ | |||
| | 278 | ff ff 7a 68 | utcoff | -34200 (-09:30) | | | 144 | 00 | UT/local[3] | 0 (local) | | |||
| | 282 | 01 | isdst | 1 (yes) | | +--------+-------------+------------------+------------------------+ | |||
| | 283 | 10 | desigidx | 16 | | | 145 | 01 | UT/local[4] | 1 (UT) | | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | | | localtimetype[5] | | | | 146 | 00 | UT/local[5] | 0 (local) | | |||
| | 284 | ff ff 73 60 | utcoff | -36000 (-10:00) | | +--------+-------------+------------------+------------------------+ | |||
| | 288 | 00 | isdst | 0 (no) | | +--------+-------------+------------------+------------------------+ | |||
| | 289 | 04 | desigidx | 4 | | | 147 | 54 5a 69 66 | magic | "TZif" | | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | 290 | 4c 4d 54 00 | designations[0] | "LMT" | | | 151 | 32 | version | '2' (2) | | |||
| | 294 | 48 53 54 00 | designations[4] | "HST" | | +--------+-------------+------------------+------------------------+ | |||
| | 298 | 48 44 54 00 | designations[8] | "HDT" | | | 152 | 00 00 00 00 | | | | |||
| | 302 | 48 57 54 00 | designations[12] | "HWT" | | | | 00 00 00 00 | | | | |||
| | 306 | 48 50 54 00 | designations[16] | "HPT" | | | | 00 00 00 00 | | | | |||
| | | | | | | | | 00 00 00 | | | | |||
| | 310 | 00 | UT/local[0] | 0 (local) | | +--------+-------------+------------------+------------------------+ | |||
| | 311 | 00 | UT/local[1] | 0 (local) | | | 167 | 00 00 00 06 | isutcnt | 6 | | |||
| | 312 | 00 | UT/local[2] | 0 (local) | | +--------+-------------+------------------+------------------------+ | |||
| | 313 | 00 | UT/local[3] | 0 (local) | | | 171 | 00 00 00 06 | isstdcnt | 6 | | |||
| | 314 | 01 | UT/local[4] | 1 (UT) | | +--------+-------------+------------------+------------------------+ | |||
| | 315 | 00 | UT/local[5] | 0 (local) | | | 175 | 00 00 00 00 | leapcnt | 0 | | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | 316 | 00 | standard/wall[0] | 0 (wall) | | | 179 | 00 00 00 07 | timecnt | 7 | | |||
| | 317 | 00 | standard/wall[1] | 0 (wall) | | +--------+-------------+------------------+------------------------+ | |||
| | 318 | 00 | standard/wall[2] | 0 (wall) | | | 183 | 00 00 00 06 | typecnt | 6 | | |||
| | 319 | 00 | standard/wall[3] | 0 (wall) | | +--------+-------------+------------------+------------------------+ | |||
| | 320 | 01 | standard/wall[4] | 1 (standard) | | | 187 | 00 00 00 14 | charcnt | 20 | | |||
| | 321 | 00 | standard/wall[5] | 0 (wall) | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | 322 | 0a | NL | '\n' | | | 191 | ff ff ff ff | trans time[0] | -2334101314 | | |||
| | 323 | 48 53 54 31 | TZ string | "HST10" | | | | 74 e0 70 be | | (1896-01-13T22:31:26Z) | | |||
| | | 30 | | | | +--------+-------------+------------------+------------------------+ | |||
| | 328 | 0a | NL | '\n' | | | 199 | ff ff ff ff | trans time[1] | -1157283000 | | |||
| +--------+--------------+------------------+------------------------+ | | | bb 05 43 48 | | (1933-04-30T12:30:00Z) | | |||
| +--------+-------------+------------------+------------------------+ | ||||
| | 207 | ff ff ff ff | trans time[2] | -1155436200 | | ||||
| | | bb 21 71 58 | | (1933-05-21T21:30:00Z) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 215 | ff ff ff ff | trans time[3] | -880198200 | | ||||
| | | cb 89 3d c8 | | (1942-02-09T12:30:00Z) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 223 | ff ff ff ff | trans time[4] | -769395600 | | ||||
| | | d2 23 f4 70 | | (1945-08-14T23:00:00Z) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 231 | ff ff ff ff | trans time[5] | -765376200 | | ||||
| | | d2 61 49 38 | | (1945-09-30T11:30:00Z) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 239 | ff ff ff ff | trans time[6] | -712150200 | | ||||
| | | d5 8d 73 48 | | (1947-06-08T12:30:00Z) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 247 | 01 | trans type[0] | 1 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 248 | 02 | trans type[1] | 2 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 249 | 01 | trans type[2] | 1 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 250 | 03 | trans type[3] | 3 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 251 | 04 | trans type[4] | 4 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 252 | 01 | trans type[5] | 1 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 253 | 05 | trans type[6] | 5 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | | | localtimetype[0] | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 254 | ff ff 6c 02 | utoff | -37886 (-10:21:26) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 258 | 00 | isdst | 0 (no) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 259 | 00 | desigidx | 0 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | | | localtimetype[1] | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 260 | ff ff 6c 58 | utoff | -37800 (-10:30) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 264 | 00 | isdst | 0 (no) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 265 | 04 | desigidx | 4 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | | | localtimetype[2] | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 266 | ff ff 7a 68 | utoff | -34200 (-09:30) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 270 | 01 | isdst | 1 (yes) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 271 | 08 | desigidx | 8 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | | | localtimetype[3] | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 272 | ff ff 7a 68 | utoff | -34200 (-09:30) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 276 | 01 | isdst | 1 (yes) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 277 | 0c | desigidx | 12 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | | | localtimetype[4] | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 278 | ff ff 7a 68 | utoff | -34200 (-09:30) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 282 | 01 | isdst | 1 (yes) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 283 | 10 | desigidx | 16 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | | | localtimetype[5] | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 284 | ff ff 73 60 | utoff | -36000 (-10:00) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 288 | 00 | isdst | 0 (no) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 289 | 04 | desigidx | 4 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 290 | 4c 4d 54 00 | designations[0] | "LMT" | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 294 | 48 53 54 00 | designations[4] | "HST" | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 298 | 48 44 54 00 | designations[8] | "HDT" | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 302 | 48 57 54 00 | designations[12] | "HWT" | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 306 | 48 50 54 00 | designations[16] | "HPT" | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 310 | 00 | standard/wall[0] | 0 (wall) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 311 | 00 | standard/wall[1] | 0 (wall) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 312 | 00 | standard/wall[2] | 0 (wall) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 313 | 00 | standard/wall[3] | 0 (wall) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 314 | 01 | standard/wall[4] | 1 (standard) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 315 | 00 | standard/wall[5] | 0 (wall) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 316 | 00 | UT/local[0] | 0 (local) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 317 | 00 | UT/local[1] | 0 (local) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 318 | 00 | UT/local[2] | 0 (local) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 319 | 00 | UT/local[3] | 0 (local) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 320 | 01 | UT/local[4] | 1 (UT) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 321 | 00 | UT/local[5] | 0 (local) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 322 | 0a | NL | '\n' | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 323 | 48 53 54 31 | TZ string | "HST10" | | ||||
| | | 30 | | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 328 | 0a | NL | '\n' | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| Table 2 | ||||
| To determine the local time in this time zone corresponding to | To determine the local time in this time zone corresponding to | |||
| 1933-05-04T12:00:00Z (UNIX time = -1156939200), the following | 1933-05-04T12:00:00Z (UNIX time = -1156939200), 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 | |||
| (trans time[1]). | (trans time[1]). | |||
| 2. Reference the corresponding transition type (trans type[1]) to | 2. Reference the corresponding transition type (trans type[1]) to | |||
| determine the local time type index (2). | determine the local time type index (2). | |||
| skipping to change at page 33, line 10 ¶ | skipping to change at page 38, line 49 ¶ | |||
| offset to UTC is 10:00. | offset 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 3 File Representing Asia/Jerusalem | B.3. 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: | |||
| | File | Hexadecimal | Record Name / | Field Value | | ||||
| | Offset | Octets | Field Name | | | * The start time value can not be represented using 32 bits, so the | |||
| +--------+--------------+------------------+------------------------+ | version 1 header contains only the required minimum data, which | |||
| | 000 | 54 5a 69 66 | magic | "TZif" | | will be ignored by readers. | |||
| | 004 | 33 | version | '3' (3) | | ||||
| | 005 | 00 00 00 00 | | | | * The version 3 header leverages the fact that by specifying | |||
| | | 00 00 00 00 | | | | 'isutcnt' and 'isstdcnt' as zero, all transition times associated | |||
| | | 00 00 00 00 | | | | with local time types are assumed to be specified as local wall- | |||
| | | 00 00 00 | | | | clock time (see the definitions of UT/local indicators and | |||
| | 020 | 00 00 00 00 | isutccnt | 0 | | standard/wall indicators in Section 3.2). | |||
| | 024 | 00 00 00 00 | isstdcnt | 0 | | ||||
| | 028 | 00 00 00 00 | isleapcnt | 0 | | * The TZ string value has been line-wrapped for presentation | |||
| | 032 | 00 00 00 00 | timecnt | 0 | | purposes only. | |||
| | 036 | 00 00 00 00 | typecnt | 0 | | ||||
| | 040 | 00 00 00 00 | charcnt | 0 | | +========+=============+==================+========================+ | |||
| | | | | | | | File | Hexadecimal | Record Name / | Field Value | | |||
| | 044 | 54 5a 69 66 | magic | "TZif" | | | Offset | Octets | Field Name | | | |||
| | 048 | 33 | version | '3' (3) | | +========+=============+==================+========================+ | |||
| | 049 | 00 00 00 00 | | | | | 000 | 54 5a 69 66 | magic | "TZif" | | |||
| | | 00 00 00 00 | | | | +--------+-------------+------------------+------------------------+ | |||
| | | 00 00 00 00 | | | | | 004 | 33 | version | '3' (3) | | |||
| | | 00 00 00 | | | | +--------+-------------+------------------+------------------------+ | |||
| | 064 | 00 00 00 03 | isutccnt | 1 | | | 005 | 00 00 00 00 | | | | |||
| | 068 | 00 00 00 03 | isstdcnt | 1 | | | | 00 00 00 00 | | | | |||
| | 072 | 00 00 00 00 | isleapcnt | 0 | | | | 00 00 00 00 | | | | |||
| | 076 | 00 00 00 03 | timecnt | 1 | | | | 00 00 00 | | | | |||
| | 080 | 00 00 00 03 | typecnt | 1 | | +--------+-------------+------------------+------------------------+ | |||
| | 084 | 00 00 00 08 | charcnt | 4 | | | 020 | 00 00 00 00 | isutcnt | 0 | | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | 088 | 00 00 00 00 | trans time[0] | 2145916800 | | | 024 | 00 00 00 00 | isstdcnt | 0 | | |||
| | | 7f e8 17 80 | | (2038-01-01T00:00:00Z) | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | | 028 | 00 00 00 00 | leapcnt | 0 | | |||
| | 096 | 00 | trans type[0] | 0 | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | | 032 | 00 00 00 00 | timecnt | 0 | | |||
| | | | localtimetype[0] | | | +--------+-------------+------------------+------------------------+ | |||
| | 097 | 00 00 1c 20 | utcoff | 7200 (+02:00) | | | 036 | 00 00 00 01 | typecnt | 1 | | |||
| | 101 | 00 | isdst | 0 (no) | | +--------+-------------+------------------+------------------------+ | |||
| | 102 | 00 | desigidx | 0 | | | 040 | 00 00 00 01 | charcnt | 1 | | |||
| | | | | | | +--------+-------------+------------------+------------------------+ | |||
| | 103 | 49 53 54 00 | designations[0] | "IST" | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | | | | localtimetype[0] | | | |||
| | 107 | 01 | UT/local[0] | 1 (UT) | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | | 044 | 00 00 00 00 | utoff | 0 (+00:00) | | |||
| | 108 | 01 | standard/wall[0] | 1 (standard) | | +--------+-------------+------------------+------------------------+ | |||
| | | | | | | | 048 | 00 | isdst | 0 (no) | | |||
| | 109 | 0a | NL | '\n' | | +--------+-------------+------------------+------------------------+ | |||
| | 110 | 49 53 54 2d | TZ string | "IST-2IDT, | | | 049 | 00 | desigidx | 0 | | |||
| | | 32 49 44 54 | | M3.4.4/26,M10.5.0" | | +--------+-------------+------------------+------------------------+ | |||
| | | 2c 4d 33 2e | | | | +--------+-------------+------------------+------------------------+ | |||
| | | 34 2e 34 2f | | | | | 050 | 00 | designations[0] | "" | | |||
| | | 32 36 2c 4d | | | | +--------+-------------+------------------+------------------------+ | |||
| | | 31 30 2e 35 | | | | +--------+-------------+------------------+------------------------+ | |||
| | | 2e 30 | | | | | 051 | 54 5a 69 66 | magic | "TZif" | | |||
| | 136 | 0a | NL | '\n' | | +--------+-------------+------------------+------------------------+ | |||
| +--------+--------------+------------------+------------------------+ | | 055 | 33 | version | '3' (3) | | |||
| +--------+-------------+------------------+------------------------+ | ||||
| | 056 | 00 00 00 00 | | | | ||||
| | | 00 00 00 00 | | | | ||||
| | | 00 00 00 00 | | | | ||||
| | | 00 00 00 | | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 071 | 00 00 00 00 | isutcnt | 0 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 075 | 00 00 00 00 | isstdcnt | 0 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 079 | 00 00 00 00 | leapcnt | 0 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 083 | 00 00 00 01 | timecnt | 1 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 087 | 00 00 00 01 | typecnt | 1 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 091 | 00 00 00 04 | charcnt | 4 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 095 | 00 00 00 00 | trans time[0] | 2145916800 | | ||||
| | | 7f e8 17 80 | | (2038-01-01T00:00:00Z) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 103 | 00 | trans type[0] | 0 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | | | localtimetype[0] | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 104 | 00 00 1c 20 | utoff | 7200 (+02:00) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 108 | 00 | isdst | 0 (no) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 109 | 00 | desigidx | 0 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 110 | 49 53 54 00 | designations[0] | "IST" | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 114 | 0a | NL | '\n' | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 115 | 49 53 54 2d | TZ string | "IST-2IDT, | | ||||
| | | 32 49 44 54 | | M3.4.4/26,M10.5.0" | | ||||
| | | 2c 4d 33 2e | | | | ||||
| | | 34 2e 34 2f | | | | ||||
| | | 32 36 2c 4d | | | | ||||
| | | 31 30 2e 35 | | | | ||||
| | | 2e 30 | | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 141 | 0a | NL | '\n' | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| Table 3 | ||||
| B.4. Truncated Version 4 File Representing America/New_York | ||||
| The following TZif file has been truncated to start on | ||||
| 2022-01-01T00:00:00Z. | ||||
| In this example: | ||||
| * The version 1 header contains only the required minimum data, | ||||
| which will be ignored by readers. | ||||
| * The version 4 header leverages the fact that by specifying | ||||
| 'isutcnt' and 'isstdcnt' as zero, all transition times associated | ||||
| with local time types are assumed to be specified as local wall- | ||||
| clock time (see the definitions of UT/local indicators and | ||||
| standard/wall indicators in Section 3.2). | ||||
| * The first leap second occurrence is the most recent one prior to | ||||
| the truncation time. | ||||
| * The last leap second correction matches the second-to-last leap | ||||
| second correction, indicating the expiration time of the leap | ||||
| second table. | ||||
| * The TZ string value has been line-wrapped for presentation | ||||
| purposes only. | ||||
| +========+=============+==================+========================+ | ||||
| | File | Hexadecimal | Record Name / | Field Value | | ||||
| | Offset | Octets | Field Name | | | ||||
| +========+=============+==================+========================+ | ||||
| | 000 | 54 5a 69 66 | magic | "TZif" | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 004 | 34 | version | '4' (4) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 005 | 00 00 00 00 | | | | ||||
| | | 00 00 00 00 | | | | ||||
| | | 00 00 00 00 | | | | ||||
| | | 00 00 00 | | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 020 | 00 00 00 00 | isutcnt | 0 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 024 | 00 00 00 00 | isstdcnt | 0 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 028 | 00 00 00 00 | leapcnt | 0 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 032 | 00 00 00 00 | timecnt | 0 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 036 | 00 00 00 01 | typecnt | 1 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 040 | 00 00 00 01 | charcnt | 1 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | | | localtimetype[0] | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 044 | 00 00 00 00 | utoff | 0 (+00:00) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 048 | 00 | isdst | 0 (no) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 049 | 00 | desigidx | 0 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 050 | 00 | designations[0] | "" | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 051 | 54 5a 69 66 | magic | "TZif" | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 055 | 34 | version | '4' (4) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 056 | 00 00 00 00 | | | | ||||
| | | 00 00 00 00 | | | | ||||
| | | 00 00 00 00 | | | | ||||
| | | 00 00 00 | | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 071 | 00 00 00 00 | isutcnt | 0 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 075 | 00 00 00 00 | isstdcnt | 0 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 079 | 00 00 00 02 | leapcnt | 2 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 083 | 00 00 00 01 | timecnt | 1 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 087 | 00 00 00 01 | typecnt | 1 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 091 | 00 00 00 04 | charcnt | 4 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 095 | 00 00 00 00 | trans time[0] | 1640995227 | | ||||
| | | 61 cf 99 9b | | (2022-01-01T00:00:00Z) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 103 | 00 | trans type[0] | 0 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | | | localtimetype[0] | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 104 | ff ff b9 b0 | utoff | -18000 (-05:00) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 108 | 00 | isdst | 0 (no) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 109 | 00 | desigidx | 0 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 110 | 45 53 54 00 | designations[0] | "EST" | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | | | leapsecond[0] | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 114 | 00 00 00 00 | occurrence | 1483228826 | | ||||
| | | 58 68 46 9a | | (2016-12-31T23:59:60Z) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 122 | 00 00 00 1b | correction | 27 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | | | leapsecond[1] | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 126 | 00 00 00 00 | occurrence | 1656374427 | | ||||
| | | 62 ba 44 9b | | (2022-06-28T00:00:00Z) | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 134 | 00 00 00 1b | correction | 27 | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 138 | 0a | NL | '\n' | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 139 | 45 53 54 35 | TZ string | "EST5EDT, | | ||||
| | | 45 44 54 2c | | M3.2.0,M11.1.0" | | ||||
| | | 4d 33 2e 32 | | | | ||||
| | | 2e 30 2c 4d | | | | ||||
| | | 31 31 2e 31 | | | | ||||
| | | 2e 30 | | | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| | 161 | 0a | NL | '\n' | | ||||
| +--------+-------------+------------------+------------------------+ | ||||
| Table 4 | ||||
| Appendix C. Changes from RFC 8536 | ||||
| * Added specification of the version 4 format and the optional leap | ||||
| second table truncation and expiration, along with an example and | ||||
| relevant interoperability considerations. | ||||
| * Applied erratum [Err6435]. | ||||
| * Addressed erratum [Err6426] and several other errors in the | ||||
| examples. | ||||
| * Clarified the all-year daylight saving time TZ string | ||||
| (Section 3.3.1) example and added a similar example with negative | ||||
| DST. | ||||
| * Added informational notes to Appendix B.3. | ||||
| * Miscellaneous editorial changes. | ||||
| Appendix D. Change Log | ||||
| This section is to be removed by RFC Editor before publication. | ||||
| D.1. 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.2. 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.3. Since RFC 8536 | ||||
| * Applied erratum [Err6435]. | ||||
| * Addressed erratum [Err6426] and several other errors in the | ||||
| examples. | ||||
| * Clarified the all-year daylight saving time TZ string | ||||
| (Section 3.3.1) example and added a similar example with negative | ||||
| DST. | ||||
| * Added informational notes to Appendix B.3. | ||||
| * 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 would like to thank the following individuals for | |||
| contributing their ideas and support for writing this specification: | contributing their ideas and support for writing this specification: | |||
| Michael Douglass, Ned Freed, Guy Harris, Eliot Lear, and Alexey | Michael Douglass, Ned Freed, Guy Harris, Eliot Lear, Alexey Melnikov, | |||
| Melnikov. | 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 | |||
| Kenneth Murchison | Kenneth Murchison | |||
| FastMail US LLC | Fastmail US LLC | |||
| Email: murch@fastmailteam.com | Email: murch@fastmailteam.com | |||
| End of changes. 113 change blocks. | ||||
| 641 lines changed or deleted | 1230 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||