idnits 2.17.1 draft-murchison-rfc8536bis-05.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (13 June 2022) is 681 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: '-89999' is mentioned on line 417, but not defined -- Looks like a reference, but probably isn't: '93599' on line 417 == Missing Reference: '-3599' is mentioned on line 1151, but not defined == Missing Reference: '-1' is mentioned on line 1151, but not defined -- Looks like a reference, but probably isn't: '0' on line 2012 -- Looks like a reference, but probably isn't: '1' on line 2020 -- Looks like a reference, but probably isn't: '2' on line 1768 -- Looks like a reference, but probably isn't: '3' on line 1741 -- Looks like a reference, but probably isn't: '4' on line 1743 -- Looks like a reference, but probably isn't: '5' on line 1745 -- Looks like a reference, but probably isn't: '6' on line 1654 -- Looks like a reference, but probably isn't: '7' on line 1264 -- Looks like a reference, but probably isn't: '8' on line 1774 -- Looks like a reference, but probably isn't: '9' on line 1280 -- Looks like a reference, but probably isn't: '10' on line 1288 -- Looks like a reference, but probably isn't: '11' on line 1296 -- Looks like a reference, but probably isn't: '12' on line 1717 -- Looks like a reference, but probably isn't: '13' on line 1312 -- Looks like a reference, but probably isn't: '14' on line 1320 -- Looks like a reference, but probably isn't: '15' on line 1328 -- Looks like a reference, but probably isn't: '16' on line 1719 -- Looks like a reference, but probably isn't: '17' on line 1344 -- Looks like a reference, but probably isn't: '18' on line 1352 -- Looks like a reference, but probably isn't: '19' on line 1360 -- Looks like a reference, but probably isn't: '20' on line 1368 -- Looks like a reference, but probably isn't: '21' on line 1436 -- Looks like a reference, but probably isn't: '22' on line 1384 -- Looks like a reference, but probably isn't: '23' on line 1392 -- Looks like a reference, but probably isn't: '24' on line 1400 -- Looks like a reference, but probably isn't: '25' on line 1408 -- Looks like a reference, but probably isn't: '26' on line 1416 -- Possible downref: Non-RFC (?) normative reference: ref. 'GNU-C' -- Possible downref: Non-RFC (?) normative reference: ref. 'ITU-R-TF.460' -- Possible downref: Non-RFC (?) normative reference: ref. 'POSIX' ** Obsolete normative reference: RFC 7231 (Obsoleted by RFC 9110) -- Possible downref: Non-RFC (?) normative reference: ref. 'ZIC' -- Duplicate reference: RFC8536, mentioned in 'Err6435', was also mentioned in 'Err6426'. -- Duplicate reference: RFC8536, mentioned in 'Err6757', was also mentioned in 'Err6435'. -- Duplicate reference: RFC8536, mentioned in 'RFC8536', was also mentioned in 'Err6757'. Summary: 1 error (**), 0 flaws (~~), 4 warnings (==), 36 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Internet Engineering Task Force (IETF) A.D. Olson 3 Internet-Draft 4 Obsoletes: 8536 (if approved) P. Eggert 5 Intended status: Standards Track UCLA 6 Expires: 15 December 2022 K. Murchison 7 Fastmail 8 13 June 2022 10 The Time Zone Information Format (TZif) 11 draft-murchison-rfc8536bis-05 13 Abstract 15 This document specifies the Time Zone Information Format (TZif) for 16 representing and exchanging time zone information, independent of any 17 particular service or protocol. Two media types for this format are 18 also defined. 20 This document replaces and obsoletes RFC 8536. 22 Status of This Memo 24 This Internet-Draft is submitted in full conformance with the 25 provisions of BCP 78 and BCP 79. 27 Internet-Drafts are working documents of the Internet Engineering 28 Task Force (IETF). Note that other groups may also distribute 29 working documents as Internet-Drafts. The list of current Internet- 30 Drafts is at https://datatracker.ietf.org/drafts/current/. 32 Internet-Drafts are draft documents valid for a maximum of six months 33 and may be updated, replaced, or obsoleted by other documents at any 34 time. It is inappropriate to use Internet-Drafts as reference 35 material or to cite them other than as "work in progress." 37 This Internet-Draft will expire on 15 December 2022. 39 Copyright Notice 41 Copyright (c) 2022 IETF Trust and the persons identified as the 42 document authors. All rights reserved. 44 This document is subject to BCP 78 and the IETF Trust's Legal 45 Provisions Relating to IETF Documents (https://trustee.ietf.org/ 46 license-info) in effect on the date of publication of this document. 47 Please review these documents carefully, as they describe your rights 48 and restrictions with respect to this document. Code Components 49 extracted from this document must include Revised BSD License text as 50 described in Section 4.e of the Trust Legal Provisions and are 51 provided without warranty as described in the Revised BSD License. 53 Table of Contents 55 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 56 2. Conventions Used in This Document . . . . . . . . . . . . . . 3 57 3. The Time Zone Information Format (TZif) . . . . . . . . . . . 5 58 3.1. TZif Header . . . . . . . . . . . . . . . . . . . . . . . 6 59 3.2. TZif Data Block . . . . . . . . . . . . . . . . . . . . . 8 60 3.3. TZif Footer . . . . . . . . . . . . . . . . . . . . . . . 12 61 3.3.1. TZ String Extensions . . . . . . . . . . . . . . . . 13 62 4. Interoperability Considerations . . . . . . . . . . . . . . . 14 63 5. Use with the Time Zone Data Distribution Service . . . . . . 15 64 5.1. Truncating TZif Files . . . . . . . . . . . . . . . . . . 15 65 5.2. Example TZDIST Request for TZif Data . . . . . . . . . . 16 66 6. Security Considerations . . . . . . . . . . . . . . . . . . . 18 67 7. Privacy Considerations . . . . . . . . . . . . . . . . . . . 18 68 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18 69 8.1. application/tzif . . . . . . . . . . . . . . . . . . . . 18 70 8.2. application/tzif-leap . . . . . . . . . . . . . . . . . . 19 71 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 21 72 9.1. Normative References . . . . . . . . . . . . . . . . . . 21 73 9.2. Informative References . . . . . . . . . . . . . . . . . 22 74 Appendix A. Common Interoperability Issues . . . . . . . . . . . 23 75 Appendix B. Example TZif Files . . . . . . . . . . . . . . . . . 26 76 B.1. Version 1 File Representing UTC (with Leap Seconds) . . . 26 77 B.2. Version 2 File Representing Pacific/Honolulu . . . . . . 32 78 B.3. Truncated Version 3 File Representing Asia/Jerusalem . . 39 79 B.4. Truncated Version 4 File Representing America/New_York . 41 80 Appendix C. Changes from RFC 8536 . . . . . . . . . . . . . . . 44 81 Appendix D. Change Log . . . . . . . . . . . . . . . . . . . . . 45 82 D.1. Since rfc8536bis-04 . . . . . . . . . . . . . . . . . . . 45 83 D.2. Since rfc8536bis-03 . . . . . . . . . . . . . . . . . . . 45 84 D.3. Since rfc8536bis-02 . . . . . . . . . . . . . . . . . . . 45 85 D.4. Since rfc8536bis-01 . . . . . . . . . . . . . . . . . . . 45 86 D.5. Since rfc8536bis-00 . . . . . . . . . . . . . . . . . . . 45 87 D.6. Since RFC 8536 . . . . . . . . . . . . . . . . . . . . . 45 88 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 46 89 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 46 91 1. Introduction 93 Time zone data typically consists of offsets from universal time 94 (UT), daylight saving transition rules, one or more local time 95 designations (acronyms or abbreviations), and optional leap-second 96 adjustments. One such format for conveying this information is 97 iCalendar [RFC5545]. It is a text-based format used by calendaring 98 and scheduling systems. 100 This document specifies the widely deployed Time Zone Information 101 Format (TZif). It is a binary format used by most UNIX systems to 102 calculate local time. This format was introduced in the 1980s and 103 has evolved since then into multiple upward-compatible versions. 104 There is a wide variety of interoperable software capable of 105 generating and reading files in this format [tz-link]. 107 This specification does not define the source of the data assembled 108 into a TZif file. One such source is the IANA-hosted time zone 109 database [RFC6557]. 111 This document obsoletes RFC 8536, providing editorial improvements, 112 new details, and errata fixes while keeping full compatibility with 113 the interchange format of RFC 8536. Additionally, a new version of 114 the format is defined. The changes from RFC 8536 are summarized in 115 Appendix C. 117 2. Conventions Used in This Document 119 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 120 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 121 "OPTIONAL" in this document are to be interpreted as described in 122 BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all 123 capitals, as shown here. 125 The following terms are used in this document (see "Sources for Time 126 Zone and Daylight Saving Time Data" [tz-link] for more detailed 127 information about civil timekeeping data and practice): 129 Coordinated Universal Time (UTC): The basis for civil time since 130 1960. It is approximately equal to mean solar time at the prime 131 meridian (0 degrees longitude). 133 Daylight Saving Time (DST): The time according to a location's law 134 or practice, when adjusted as necessary from standard time. The 135 adjustment may be positive or negative, and the amount of 136 adjustment may vary depending on the date and time; the TZif 137 format even allows the adjustment to be zero, although this is not 138 common practice. 140 International Atomic Time (TAI): The time standard based on atomic 141 clocks since 1972. It is equal to UTC but without leap-second 142 adjustments. 144 Leap-Second: A one second adjustment to keep UTC close to mean solar 145 time at the prime meridian (see [ITU-R-TF.460]). Each inserted or 146 deleted leap-second occurs at the end of a UTC month, that is, a 147 month using the Gregorian calendar and the UTC timescale. 149 Leap-Second Correction (LEAPCORR): The value of TAI - UTC - 10 for 150 timestamps after the first leap second, and zero for timestamps 151 before that. The expression "TAI - UTC - 10" comes from the fact 152 that TAI - UTC was defined to be 10 just prior to the first leap 153 second in 1972, so clocks with leap seconds have a zero LEAPCORR 154 before the first leap second. 156 Local Time: Civil time for a particular location. Its offset from 157 universal time can depend on the date and time of day. 159 POSIX Epoch: 1970-01-01 00:00:00 UTC, the basis for absolute 160 timestamps in this document. 162 Standard Time: The time according to a location's law or practice, 163 unadjusted for Daylight Saving Time. 165 Time Change: A change to civil timekeeping practice. It occurs when 166 one or more of the following happen simultaneously: 168 1. a change in UT offset 170 2. a change in whether daylight saving time is in effect 172 3. a change in time zone abbreviation 174 4. a leap second (i.e., a change in LEAPCORR) 176 Time Zone Data: The Time Zone Data Distribution Service (TZDIST) 177 [RFC7808] defines "Time zone data" as "data that defines a single 178 time zone, including an identifier, UTC offset values, DST rules, 179 and other information such as time zone abbreviations." The 180 interchange format defined in this document is one such form of 181 time zone data. 183 Transition Time: The moment of occurrence of a time change that is 184 not a leap second. It is identified with a signed integer count 185 of UNIX leap time seconds since the POSIX epoch. 187 Universal Time (UT): The basis of civil time. This is the principal 188 form of the mean solar time at the prime meridian (0 degrees 189 longitude) for timestamps before UTC was introduced in 1960 and is 190 UTC for timestamps thereafter. Although UT is sometimes called 191 "UTC" or "GMT" in other sources, this specification uses the term 192 "UT" to avoid confusion with UTC or with GMT. 194 UNIX Time: The time as returned by the time() function provided by 195 the C programming language (see Section 3 of the "System 196 Interfaces" volume of [POSIX]). This is an integer number of 197 seconds since the POSIX epoch, not counting leap seconds. As an 198 extension to POSIX, negative values represent times before the 199 POSIX epoch, using UT. 201 UNIX Leap Time: UNIX time plus all preceding leap-second 202 corrections. For example, if the first leap-second record in a 203 TZif file occurs at 1972-06-30 23:59:60 UTC, the UNIX leap time 204 for the timestamp 1972-07-01 00:00:00 UTC would be 78796801, one 205 greater than the UNIX time for the same timestamp. Similarly, if 206 the second leap-second record occurs at 1972-12-31 23:59:60 UTC, 207 it accounts for the first leap second, so the UNIX leap time of 208 1972-12-31 23:59:60 UTC would be 94694401, and the UNIX leap time 209 of 1973-01-01 00:00:00 UTC would be 94694402. If a TZif file 210 specifies no leap-second records, UNIX leap time is equal to UNIX 211 time. 213 Wall Time: Another name for local time; short for "wall-clock time". 215 3. The Time Zone Information Format (TZif) 217 The Time Zone Information Format begins with a fixed 44-octet version 218 1 header (Section 3.1) containing a field that specifies the version 219 of the file's format. Readers designed for version N can read 220 version N+1 files without too much trouble; data specific to version 221 N+1 either appears after version N data so that earlier-version 222 readers can easily ignore later-version data they are not designed 223 for, or it appears as a minor extension to version N that version N 224 readers are likely to tolerate well. 226 The version 1 header is followed by a variable-length version 1 data 227 block (Section 3.2) containing four-octet (32-bit) transition times 228 and leap-second occurrences. These 32-bit values are limited to 229 representing time changes from 1901-12-13 20:45:52 through 2038-01-19 230 03:14:07 UT, and the version 1 header and data block are present only 231 for backward compatibility with obsolescent readers, as discussed in 232 Common Interoperability Issues (Appendix A). 234 Version 1 files terminate after the version 1 data block. Files from 235 versions 2 and higher extend the format by appending a second 236 44-octet version 2+ header, a variable-length version 2+ data block 237 containing eight-octet (64-bit) transition times and leap-second 238 occurrences, and a variable-length footer (Section 3.3). These 239 64-bit values can represent times approximately 292 billion years 240 into the past or future. 242 NOTE: All multi-octet integer values MUST be stored in network octet 243 order format (high-order octet first, otherwise known as big-endian), 244 with all bits significant. Signed integer values MUST be represented 245 using two's complement. 247 A TZif file is structured as follows: 249 Version 1 Versions 2+ 250 +-------------+ +-------------+ 251 | Version 1 | | Version 1 | 252 | Header | | Header | 253 +-------------+ +-------------+ 254 | Version 1 | | Version 1 | 255 | Data Block | | Data Block | 256 +-------------+ +-------------+ 257 | Version 2+ | 258 | Header | 259 +-------------+ 260 | Version 2+ | 261 | Data Block | 262 +-------------+ 263 | Footer | 264 +-------------+ 266 Figure 1: General Format of TZif Files 268 3.1. TZif Header 270 A TZif header is structured as follows (the lengths of multi-octet 271 fields are shown in parentheses): 273 +---------------+---+ 274 | magic (4) |ver| 275 +---------------+---+---------------------------------------+ 276 | [unused - reserved for future use] (15) | 277 +---------------+---------------+---------------+-----------+ 278 | isutcnt (4) | isstdcnt (4) | leapcnt (4) | 279 +---------------+---------------+---------------+ 280 | timecnt (4) | typecnt (4) | charcnt (4) | 281 +---------------+---------------+---------------+ 282 Figure 2: TZif Header 284 The fields of the header are defined as follows: 286 magic: The four-octet ASCII [RFC20] sequence "TZif" (0x54 0x5A 0x69 287 0x66), which identifies the file as utilizing the Time Zone 288 Information Format. 290 ver(sion): An octet identifying the version of the file's format. 291 The value MUST be one of the following: 293 NUL (0x00) Version 1 - The file contains only the version 1 294 header and data block. Version 1 files MUST NOT contain a 295 version 2+ header, data block, or footer. 297 '2' (0x32) Version 2 - The file MUST contain the version 1 header 298 and data block, a version 2+ header and data block, and a 299 footer. The TZ string in the footer (Section 3.3), if 300 nonempty, MUST strictly adhere to the requirements for the TZ 301 environment variable as defined in Section 8.3 of the "Base 302 Definitions" volume of [POSIX] and MUST encode the POSIX 303 portable character set as ASCII. The leap second table MUST 304 NOT be truncated at the start (Section 5.1), and MUST NOT 305 contain an expiration time. 307 '3' (0x33) Version 3 - The file MUST conform to all version 2 308 requirements, except that any TZ string in the footer 309 (Section 3.3) MAY use the TZ string extensions described below 310 (Section 3.3.1). 312 '4' (0x34) Version 4 - The file MUST conform to all version 3 313 requirements, except that the leap second table MAY be 314 truncated at the start, and MAY contain an expiration time. 316 isutcnt: A four-octet unsigned integer specifying the number of UT/ 317 local indicators contained in the data block -- MUST either be 318 zero or equal to "typecnt". 320 isstdcnt: A four-octet unsigned integer specifying the number of 321 standard/wall indicators contained in the data block -- MUST 322 either be zero or equal to "typecnt". 324 leapcnt: A four-octet unsigned integer specifying the number of 325 leap-second records contained in the data block. 327 timecnt: A four-octet unsigned integer specifying the number of 328 transition times contained in the data block. 330 typecnt: A four-octet unsigned integer specifying the number of 331 local time type records contained in the data block -- MUST NOT be 332 zero. (Although local time type records convey no useful 333 information in files that have nonempty TZ strings but no 334 transitions, at least one such record is nevertheless required 335 because many TZif readers reject files that have zero time types.) 337 charcnt: A four-octet unsigned integer specifying the total number 338 of octets used by the set of time zone designations contained in 339 the data block - MUST NOT be zero. The count includes the 340 trailing NUL (0x00) octet at the end of the last time zone 341 designation. 343 Although the version 1 and 2+ headers have the same format, magic 344 number, and version fields, their count fields may differ, because 345 the version 1 data can be a subset of the version 2+ data. 347 3.2. TZif Data Block 349 A TZif data block consists of seven variable-length elements, each of 350 which is a series of items. The number of items in each series is 351 determined by the corresponding count field in the header. The total 352 length of each element is calculated by multiplying the number of 353 items by the size of each item. Therefore, implementations that do 354 not wish to parse or use the version 1 data block can calculate its 355 total length and skip directly to the header of the version 2+ data 356 block. 358 In the version 1 data block, time values are 32 bits (TIME_SIZE = 4 359 octets). In the version 2+ data block, present only in version 2 and 360 higher files, time values are 64 bits (TIME_SIZE = 8 octets). 362 The data block is structured as follows (the lengths of multi-octet 363 fields are shown in parentheses): 365 +---------------------------------------------------------+ 366 | transition times (timecnt x TIME_SIZE) | 367 +---------------------------------------------------------+ 368 | transition types (timecnt) | 369 +---------------------------------------------------------+ 370 | local time type records (typecnt x 6) | 371 +---------------------------------------------------------+ 372 | time zone designations (charcnt) | 373 +---------------------------------------------------------+ 374 | leap-second records (leapcnt x (TIME_SIZE + 4)) | 375 +---------------------------------------------------------+ 376 | standard/wall indicators (isstdcnt) | 377 +---------------------------------------------------------+ 378 | UT/local indicators (isutcnt) | 379 +---------------------------------------------------------+ 381 Figure 3: TZif Data Block 383 The elements of the data block are defined as follows: 385 transition times: A series of four- or eight-octet UNIX leap-time 386 values sorted in strictly ascending order. Each value is used as 387 a transition time at which the rules for computing local time may 388 change. The number of time values is specified by the "timecnt" 389 field in the header. Each time value SHOULD be at least -2**59. 390 (-2**59 is the greatest negated power of 2 that predates the Big 391 Bang, and avoiding earlier timestamps works around known TZif 392 reader bugs relating to outlandishly negative timestamps.) 394 transition types: A series of one-octet unsigned integers specifying 395 the type of local time of the corresponding transition time. 396 These values serve as zero-based indices into the array of local 397 time type records. The number of type indices is specified by the 398 "timecnt" field in the header. Each type index MUST be in the 399 range [0, "typecnt" - 1]. 401 local time type records: A series of six-octet records specifying a 402 local time type. The number of records is specified by the 403 "typecnt" field in the header. Each record has the following 404 format (the lengths of multi-octet fields are shown in 405 parentheses): 407 +---------------+---+---+ 408 | utoff (4) |dst|idx| 409 +---------------+---+---+ 411 utoff: A four-octet signed integer specifying the number of 412 seconds to be added to UT in order to determine local time. 413 The value MUST NOT be -2**31 and SHOULD be in the range 414 [-89999, 93599] (i.e., its value SHOULD be more than -25 hours 415 and less than 26 hours). Avoiding -2**31 allows 32-bit clients 416 to negate the value without overflow. Restricting it to 417 [-89999, 93599] allows easy support by implementations that 418 already support the POSIX-required range [-24:59:59, 25:59:59]. 420 (is)dst: A one-octet value indicating whether local time should 421 be considered Daylight Saving Time (DST). The value MUST be 0 422 or 1. A value of one (1) indicates that this type of time is 423 DST. A value of zero (0) indicates that this time type is 424 standard time. 426 (desig)idx: A one-octet unsigned integer specifying a zero-based 427 index into the series of time zone designation octets, thereby 428 selecting a particular designation string. Each index MUST be 429 in the range [0, "charcnt" - 1]; it designates the 430 NUL-terminated string of octets starting at position "idx" in 431 the time zone designations. (This string MAY be empty.) A NUL 432 octet MUST exist in the time zone designations at or after 433 position "idx". If the designation string is "-00", the time 434 type is a placeholder indicating that local time is 435 unspecified. 437 time zone designations: A series of octets constituting an array of 438 NUL-terminated (0x00) time zone designation strings. The total 439 number of octets is specified by the "charcnt" field in the 440 header. Note that two designations MAY overlap if one is a suffix 441 of the other. The character encoding of time zone designation 442 strings is not specified; however, see Section 4 of this document. 444 leap-second records: A series of eight- or twelve-octet records 445 specifying the corrections that need to be applied to UTC in order 446 to determine TAI. The records are sorted by the occurrence time 447 in strictly ascending order. The number of records is specified 448 by the "leapcnt" field in the header. Each record has one of the 449 following structures (the lengths of multi-octet fields are shown 450 in parentheses): 452 Version 1 Data Block: 453 +---------------+---------------+ 454 | occur (4) | corr (4) | 455 +---------------+---------------+ 457 version 2+ Data Block: 458 +---------------+---------------+---------------+ 459 | occur (8) | corr (4) | 460 +---------------+---------------+---------------+ 462 occur(rence): A four- or eight-octet UNIX leap time value 463 specifying the time at which a leap-second correction occurs or 464 at which the leap second table expires. The first value, if 465 present, MUST be nonnegative, and each leap second MUST occur 466 at the end of a UTC month. 468 corr(ection): A four-octet signed integer specifying the value of 469 LEAPCORR on or after the occurrence. If "leapcnt" is zero, 470 LEAPCORR is zero for all timestamps; otherwise, for timestamps 471 before the first occurrence time, LEAPCORR is zero if the first 472 correction is one (1) or minus one (-1), and is unspecified 473 otherwise (which can happen only in files truncated at the 474 start (Section 5.1)). 476 The first leap second is a positive leap second if and only if 477 its correction is positive. Each correction after the first 478 MUST differ from the previous correction by either one (1) for 479 a positive leap second or minus one (-1) for a negative leap 480 second, except that if there are two or more leap-second 481 records the correction value of the last record MAY be the same 482 as the second-to-last record, with the last record indicating 483 the expiration time of the leap-second table. 485 standard/wall indicators: A series of one-octet values indicating 486 whether the transition times associated with local time types were 487 specified as standard time or wall-clock time. Each value MUST be 488 0 or 1. A value of one (1) indicates standard time. The value 489 MUST be set to one (1) if the corresponding UT/local indicator is 490 set to one (1). A value of zero (0) indicates wall time. The 491 number of values is specified by the "isstdcnt" field in the 492 header. If "isstdcnt" is zero (0), all transition times 493 associated with local time types are assumed to be specified as 494 wall time. 496 UT/local indicators: A series of one-octet values indicating whether 497 the transition times associated with local time types were 498 specified as UT or local time. Each value MUST be 0 or 1. A 499 value of one (1) indicates UT, and the corresponding standard/wall 500 indicator MUST also be set to one (1). A value of zero (0) 501 indicates local time. The number of values is specified by the 502 "isutcnt" field in the header. If "isutcnt" is zero (0), all 503 transition times associated with local time types are assumed to 504 be specified as local time. 506 The type corresponding to a transition time specifies local time for 507 timestamps starting at the given transition time and continuing up 508 to, but not including, the next transition time. Local time for 509 timestamps before the first transition is specified by the first time 510 type (time type 0). Local time for timestamps on or after the last 511 transition is specified by the TZ string in the footer (Section 3.3) 512 if present and nonempty; otherwise, it is unspecified. If there are 513 no transitions, local time for all timestamps is specified by the TZ 514 string in the footer if present and nonempty; otherwise, it is 515 specified by time type 0. A time type with a designation string of 516 "-00" represents an unspecified local time. 518 A given pair of standard/wall and UT/local indicators is used to 519 designate whether the corresponding transition time was specified as 520 UT, standard time, or wall-clock time. Note that there are only 521 three combinations of the two indicators, given that the standard/ 522 wall value MUST be one (1) if the UT/local value is one (1). This 523 information can be useful if the transition times in a TZif file need 524 to be transformed into transitions appropriate for another time zone 525 (e.g. when calculating transition times for a simple POSIX-like TZ 526 string such as "AKST9AKDT"). 528 In order to eliminate unused space in a TZif file, every nonzero 529 local time type index SHOULD appear at least once in the transition 530 type array. Likewise, every octet in the time zone designations 531 array SHOULD be used by at least one time type record. 533 3.3. TZif Footer 535 The TZif footer is structured as follows (the lengths of multi-octet 536 fields are shown in parentheses): 538 +---+--------------------+---+ 539 | NL| TZ string (0...) |NL | 540 +---+--------------------+---+ 542 Figure 4: TZif Footer 544 The elements of the footer are defined as follows: 546 NL: An ASCII new line character (0x0A). 548 TZ string: A rule for computing local time changes after the last 549 transition time stored in the version 2+ data block. The string 550 is either empty or uses the expanded format of the "TZ" 551 environment variable as defined in Section 8.3 of the "Base 552 Definitions" volume of [POSIX] with ASCII encoding, possibly 553 utilizing extensions described below (Section 3.3.1) in version 3 554 and higher files. If the string is empty, the corresponding 555 information is not available. If the string is nonempty and one 556 or more transitions appear in the version 2+ data, the string MUST 557 be consistent with the last version 2+ transition. In other 558 words, evaluating the TZ string at the time of the last transition 559 should yield the same time type as was specified in the last 560 transition. The string MUST NOT contain NUL octets or be 561 NUL-terminated, and it SHOULD NOT begin with the ':' (colon) 562 character. 564 The TZif footer is present only in version 2 and higher files, as the 565 obsolescent version 1 format was designed before the need for a 566 footer was apparent. 568 3.3.1. TZ String Extensions 570 The TZ string in a version 3 or higher TZif file MAY use the 571 following extensions to POSIX TZ strings. These extensions are 572 described using the terminology of Section 8.3 of the "Base 573 Definitions" volume of [POSIX]. 575 * The hours part of the transition times may be signed and range 576 from -167 through 167 (-167 <= hh <= 167) instead of the POSIX- 577 required unsigned values from 0 through 24. 579 Example: <-03>3<-02>,M3.5.0/-2,M10.5.0/-1 580 This represents a time zone that observes daylight saving time 581 from 22:00 on the day before March's last Sunday until 23:00 on 582 the day before October's last Sunday. Standard time is 3 hours 583 west of UT and is abbreviated "-03"; daylight saving time is 2 584 hours west of UT and is abbreviated "-02". 586 * DST is considered to be in effect all year if it starts January 1 587 at 00:00 and ends December 31 at 24:00 plus the difference between 588 daylight saving and standard time, leaving no room for standard 589 time in the calendar. 591 Example: EST5EDT,0/0,J365/25 592 This represents a time zone that observes daylight saving time 593 all year. It is 4 hours west of UT and is abbreviated "EDT". 594 The "EST" is ignored. 596 Example: XXX3EDT4,0/0,J365/23 597 This represents the same time zone as the previous example. It 598 uses a DST further west of UTC than standard time. The "XXX" 599 is ignored. 601 4. Interoperability Considerations 603 The following practices help ensure the interoperability of TZif 604 applications. 606 * Version 1 files are considered a legacy format and SHOULD NOT be 607 generated, as they do not support transition times after the year 608 2038. 610 * Readers that understand only version 1 MUST ignore any data that 611 extends beyond the calculated end of the version 1 data block. 613 * Other than version 1, writers should generate the lowest version 614 number needed by a file's data. For example, a writer should 615 generate a version 4 file only if its leap second table either 616 expires or is truncated at the start. Likewise, a writer not 617 generating a version 4 file should generate a version 3 file only 618 if TZ string extensions are necessary to accurately model 619 transition times. 621 * To save space, writers of version 2+ files MAY output a 622 placeholder version 1 data block with all counts zero except that 623 "typecnt" and "charcnt" are both one (1). If this is done, 624 obsolescent version-1-only readers MUST interpret these files as 625 lacking time changes and time zone abbreviations. 627 * Unless the version 1 data block is a placeholder, the sequence of 628 timestamps defined by the version 1 header and data block SHOULD 629 be a contiguous sub-sequence of the timestamps defined by the 630 version 2+ header and data block, and by the footer. This 631 guideline helps obsolescent version 1 readers agree with current 632 readers about timestamps within the contiguous sub-sequence. 634 * When a TZif file contains a leap second table expiration time, 635 TZif readers SHOULD either refuse to process post-expiration 636 timestamps, or process them as if the expiration time did not 637 exist (possibly with an error indication). 639 * Time zone designations SHOULD consist of at least three (3) and no 640 more than six (6) ASCII characters from the set of alphanumerics, 641 '-', and '+'. This is for compatibility with POSIX requirements 642 for time zone abbreviations. 644 * When reading a version 2 or higher file, readers SHOULD ignore the 645 version 1 header and data block except for the purpose of skipping 646 over them. 648 * Readers SHOULD calculate the total lengths of the headers and data 649 blocks and check that they all fit within the actual file size, as 650 part of a validity check for the file. 652 * When a TZif file is used in a MIME message entity, it SHOULD be 653 indicated by one of the following media types: 655 - "application/tzif-leap" (Section 8.2) to indicate that leap- 656 second records are included in the TZif data as necessary (none 657 are necessary if the file is truncated to a range that precedes 658 the first leap second). 660 - "application/tzif" (Section 8.1) to indicate that leap-second 661 records are not included in the TZif data; "leapcnt" in the 662 header(s) MUST be zero (0). 664 * Common interoperability issues and possible workarounds are 665 described in Appendix A. 667 5. Use with the Time Zone Data Distribution Service 669 The Time Zone Data Distribution Service (TZDIST) [RFC7808] is a 670 service that allows reliable, secure, and fast delivery of time zone 671 data and leap-second rules to client systems such as calendaring and 672 scheduling applications or operating systems. 674 A TZDIST service MAY supply time zone data to clients in the Time 675 Zone Information Format. Such a service MUST indicate that it 676 supports this format by including the media type "application/tzif" 677 (Section 8.1) in its "capabilities" response (see Section 5.1 of 678 [RFC7808]). A TZDIST service MAY also include the media type 679 "application/tzif-leap" (Section 8.2) in its "capabilities" response 680 if it is able to generate TZif files containing leap-second records. 681 A TZDIST service MUST NOT advertise the "application/tzif-leap" media 682 type without also advertising "application/tzif". 684 TZDIST clients MUST use the HTTP "Accept" [RFC7231] header field to 685 indicate their preference to receive data in the "application/tzif" 686 and/or "application/tzif-leap" formats. 688 5.1. Truncating TZif Files 690 As described in Section 3.9 of [RFC7808], a TZDIST service MAY 691 truncate time zone transition data. A truncated TZif file is valid 692 from its first and up to, but not including, its last version 2+ 693 transition time, if present. 695 When truncating the start of a TZif file, the service MUST supply in 696 the version 2+ data a first transition time that is the start point 697 of the truncation range. As with untruncated TZif files, time type 0 698 indicates local time immediately before the start point, and the time 699 type of the first transition indicates local time thereafter. Time 700 type 0 SHOULD be a placeholder indicating that local time is 701 unspecified. 703 When truncating the start of a TZif file containing leap-second 704 records, the service MUST keep all leap-second records governing 705 timestamps within the truncation range, even if the first such record 706 precedes the start point of the truncation range. If the truncated 707 leap second table is nonempty, its first record MUST have a positive 708 correction if and only if it represents a positive leap second. 710 When truncating the end of a TZif file, the service MUST supply in 711 the version 2+ data a last transition time that is the end point of 712 the truncation range and MUST supply an empty TZ string. As with 713 untruncated TZif files with empty TZ strings, a truncated TZif file 714 does not indicate local time after the last transition. To this end, 715 the time type of the last transition SHOULD be a placeholder 716 indicating that local time is unspecified. 718 All represented information that falls inside the truncation range 719 MUST be the same as that represented by a corresponding untruncated 720 TZif file. 722 TZDIST clients SHOULD NOT use a truncated TZif file (as described 723 above) to interpret timestamps outside the truncation time range. 725 5.2. Example TZDIST Request for TZif Data 727 In this example, the client checks the server for the available 728 formats and then requests that the time zone with a specific time 729 zone identifier be returned in Time Zone Information Format. 731 Note that this example presumes that the time zone context path has 732 been discovered (see [RFC7808], Section 4.2.1) to be "/tzdist". 734 >> Request << 736 GET /tzdist/capabilities HTTP/1.1 737 Host: tz.example.com 739 >> Response << 741 HTTP/1.1 200 OK 742 Date: Fri, 01 Jun 2018 14:52:23 GMT 743 Content-Type: application/json 744 Content-Length: xxxx 746 { 747 "version": 1, 749 "info": { 750 "primary-source": "IANA:2018e", 751 "formats": [ 752 "text/calendar", 753 "application/tzif", 754 "application/tzif-leap" 755 ], 756 ... 757 }, 758 ... 759 } 761 >> Request << 763 GET /tzdist/zones/America%2FNew_York HTTP/1.1 764 Host: tz.example.com 765 Accept: application/tzif 767 >> Response << 769 HTTP/1.1 200 OK 770 Date: Fri, 01 Jun 2018 14:52:24 GMT 771 Content-Type: application/tzif 772 Content-Length: xxxx 773 ETag: "123456789-000-111" 775 TZif2...[binary data without leap-second records]... 776 EST5EDT,M3.2.0,M11.1.0 778 6. Security Considerations 780 The Time Zone Information Format contains no executable code, and it 781 does not define any extensible areas that could be used to store such 782 code. 784 TZif contains counted arrays of data elements. All counts should be 785 checked when processing TZif objects, to guard against references 786 past the end of the object. 788 TZif provides no confidentiality or integrity protection. Time zone 789 information is normally public and does not call for confidentiality 790 protection. Since time zone information is used in many critical 791 applications, integrity protection may be required and must be 792 provided externally. 794 7. Privacy Considerations 796 The Time Zone Information Format contains publicly available data, 797 and it does not define any extensible areas that could be used to 798 store private data. 800 As discussed in Section 9 of [RFC7808], transmission of time zone 801 data over an insecure communications channel could leak the past, 802 current, or future location of a device or user. As such, TZif data 803 transmitted over a public communications channel MUST be protected 804 with a confidentiality layer such as that provided by Transport Layer 805 Security (TLS) [RFC8446]. 807 8. IANA Considerations 809 This document defines two media types [RFC6838] for the exchange of 810 data utilizing the Time Zone Information Format. 812 8.1. application/tzif 814 Type name: 815 application 817 Subtype name: 818 tzif 820 Required parameters: 821 none 823 Optional parameters: 824 none 826 Encoding considerations: 827 binary 829 Security considerations: 830 See Section 6 of RFC XXXX. 832 Interoperability considerations: 833 See Section 4 of RFC XXXX. 835 Published specification: 836 This specification. 838 Applications that use this media type: 839 This media type is designed for widespread use by applications 840 that need to use or exchange time zone information, such as the 841 Time Zone Information Compiler (zic) [ZIC] and the GNU C Library 842 [GNU-C]. The Time Zone Distribution Service [RFC7808] can 843 directly use this media type. 845 Fragment identifier considerations: 846 N/A 848 Additional information: 849 Magic number(s): The first 4 octets are 0x54, 0x5A, 0x69, 0x66 851 File extensions(s): N/A 853 Macintosh file type code(s): N/A 855 Person & email address to contact for further information: 856 Time Zone Database mailing list 858 Intended usage: 859 COMMON 861 Restrictions on usage: 862 N/A 864 Author: 865 See the "Authors' Addresses" section of RFC XXXX. 867 Change controller: 868 IETF 870 8.2. application/tzif-leap 872 Type name: 873 application 875 Subtype name: 876 tzif-leap 878 Required parameters: 879 none 881 Optional parameters: 882 none 884 Encoding considerations: 885 binary 887 Security considerations: 888 See Section 6 of RFC XXXX. 890 Interoperability considerations: 891 See Section 4 of RFC XXXX. 893 Published specification: 894 This specification. 896 Applications that use this media type: 897 This media type is designed for widespread use by applications 898 that need to use or exchange time zone information, such as the 899 Time Zone Information Compiler (zic) [ZIC] and the GNU C Library 900 [GNU-C]. The Time Zone Distribution Service [RFC7808] can 901 directly use this media type. 903 Fragment identifier considerations: 904 N/A 906 Additional information: 907 Magic number(s): The first 4 octets are 0x54, 0x5A, 0x69, 0x66 909 File extensions(s): N/A 911 Macintosh file type code(s): N/A 913 Person & email address to contact for further information: 914 Time Zone Database mailing list 916 Intended usage: 917 COMMON 919 Restrictions on usage: 920 N/A 922 Author: 923 See the "Authors' Addresses" section of RFC XXXX. 925 Change controller: 926 IETF 928 9. References 930 9.1. Normative References 932 [GNU-C] "The GNU C Library (glibc)", 933 . 935 [ITU-R-TF.460] 936 International Telecommunications Union, "Standard- 937 frequency and time-signal emissions", ITU-R Recommendation 938 TF.460, February 2002, 939 . 941 [POSIX] IEEE, "Standard for Information Technology--Portable 942 Operating System Interface (POSIX(R)) Base Specifications, 943 Issue 7", IEEE 1003.1-2017, 944 DOI 10.1109/IEEESTD.2018.8277153, 31 January 2018, 945 . 947 [RFC20] Cerf, V., "ASCII format for network interchange", STD 80, 948 RFC 20, DOI 10.17487/RFC0020, October 1969, 949 . 951 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 952 Requirement Levels", BCP 14, RFC 2119, 953 DOI 10.17487/RFC2119, March 1997, 954 . 956 [RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type 957 Specifications and Registration Procedures", BCP 13, 958 RFC 6838, DOI 10.17487/RFC6838, January 2013, 959 . 961 [RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer 962 Protocol (HTTP/1.1): Semantics and Content", RFC 7231, 963 DOI 10.17487/RFC7231, June 2014, 964 . 966 [RFC7808] Douglass, M. and C. Daboo, "Time Zone Data Distribution 967 Service", RFC 7808, DOI 10.17487/RFC7808, March 2016, 968 . 970 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 971 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 972 May 2017, . 974 [ZIC] Kerrisk, M., "ZIC(8)", man-pages release 4.16, 25 February 975 2010, . 977 9.2. Informative References 979 [EGGERT-TZ] 980 "History for tz", March 2021, 981 . 983 [Err6426] RFC Errata, "Erratum ID 6426", RFC 8536, 984 . 986 [Err6435] RFC Errata, "Erratum ID 6435", RFC 8536, 987 . 989 [Err6757] RFC Errata, "Erratum ID 6757", RFC 8536, 990 . 992 [RFC5545] Desruisseaux, B., Ed., "Internet Calendaring and 993 Scheduling Core Object Specification (iCalendar)", 994 RFC 5545, DOI 10.17487/RFC5545, September 2009, 995 . 997 [RFC6557] Lear, E. and P. Eggert, "Procedures for Maintaining the 998 Time Zone Database", BCP 175, RFC 6557, 999 DOI 10.17487/RFC6557, February 2012, 1000 . 1002 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 1003 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 1004 . 1006 [RFC8536] Olson, A., Eggert, P., and K. Murchison, "The Time Zone 1007 Information Format (TZif)", RFC 8536, 1008 DOI 10.17487/RFC8536, February 2019, 1009 . 1011 [tz-link] Eggert, P. and A.D. Olson, "Sources for Time Zone and 1012 Daylight Saving Time Data", 2018, 1013 . 1015 Appendix A. Common Interoperability Issues 1017 This section documents common problems in implementing this 1018 specification. Most of these are problems in generating TZif files 1019 for use by readers conforming to predecessors of this specification 1020 [EGGERT-TZ]. The goals of this section are: 1022 1. to help TZif writers output files that avoid common pitfalls in 1023 older or buggy TZif readers, 1025 2. to help TZif readers avoid common pitfalls when reading files 1026 generated by future TZif writers, and 1028 3. to help any future specification authors see what sort of 1029 problems arise when the TZif format is changed. 1031 When new versions of the TZif format have been defined, a design goal 1032 has been that a reader can successfully use a TZif file even if the 1033 file is of a later TZif version than what the reader was designed 1034 for. When complete compatibility was not achieved, an attempt was 1035 made to limit glitches to rarely used timestamps and allow simple 1036 partial workarounds in writers designed to generate new-version data 1037 useful even for older-version readers. This section attempts to 1038 document these compatibility issues and workarounds, as well as 1039 documenting other common bugs in readers. 1041 Interoperability problems with TZif include the following: 1043 * Some readers examine only version 1 data. As a partial 1044 workaround, a writer can output as much version 1 data as 1045 possible. However, a reader should ignore version 1 data and use 1046 version 2+ data, even if the reader's native timestamps have only 1047 32 bits. 1049 * Some readers designed for version 2 might mishandle timestamps 1050 after a version 3 or higher file's last transition, because they 1051 cannot parse extensions to POSIX in the TZ-like string. As a 1052 partial workaround, a writer can output more transitions than 1053 necessary, so that only far-future timestamps are mishandled by 1054 version 2 readers. 1056 * Some readers designed for version 2 do not support permanent 1057 daylight saving time with transitions after 24:00 -- e.g., a TZ 1058 string "EST5EDT,0/0,J365/25" denoting permanent Eastern Daylight 1059 Time (-04). As a workaround, a writer can substitute standard 1060 time for two time zones east, e.g., "XXX3EDT4,0/0,J365/23" for a 1061 time zone with a never-used standard time (XXX, -03) and negative 1062 daylight saving time (EDT, -04) all year. Alternatively, as a 1063 partial workaround a writer can substitute standard time for the 1064 next time zone east -- e.g., "AST4" for permanent Atlantic 1065 Standard Time (-04). 1067 * Some readers designed for version 2 or 3, and that require strict 1068 conformance to RFC 8536, reject version 4 files whose leap second 1069 tables are truncated at the start or that end in expiration times. 1071 * Some readers ignore the footer and instead predict future 1072 timestamps from the time type of the last transition. As a 1073 partial workaround, a writer can output more transitions than 1074 necessary. 1076 * Some readers do not use time type 0 for timestamps before the 1077 first transition, in that they infer a time type using a heuristic 1078 that does not always select time type 0. As a partial workaround, 1079 a writer can output a dummy (no-op) first transition at an early 1080 time. 1082 * Some readers mishandle timestamps before the first transition that 1083 has a timestamp not less than -2**31. Readers that support only 1084 32-bit timestamps are likely to be more prone to this problem, for 1085 example, when they process 64-bit transitions, only some of which 1086 are representable in 32 bits. As a partial workaround, a writer 1087 can output a dummy transition at timestamp -2**31. 1089 * Some readers mishandle a transition if its timestamp has the 1090 minimum possible signed 64-bit value. Timestamps less than -2**59 1091 are not recommended. 1093 * Some readers mishandle POSIX-style TZ strings that contain "<" or 1094 ">". As a partial workaround, a writer can avoid using '<' or '>' 1095 for time zone abbreviations containing only alphabetic characters. 1097 * Many readers mishandle time zone abbreviations that contain non- 1098 ASCII characters. These characters are not recommended. 1100 * Some readers may mishandle time zone abbreviations that contain 1101 fewer than 3 or more than 6 characters, or that contain ASCII 1102 characters other than alphanumerics, '-', and '+'. These 1103 abbreviations are not recommended. 1105 * This specification does not dictate how readers should deal with 1106 timestamps when local time is unspecified. Common practice is for 1107 readers to report UT with designation string "-00". A reader 1108 could return an error indication instead. 1110 * Some readers mishandle TZif files that specify daylight saving 1111 time UT offsets that are less than the UT offsets for the 1112 corresponding standard time. These readers do not support 1113 locations like Ireland, which uses the equivalent of the POSIX TZ 1114 string "IST-1GMT0,M10.5.0,M3.5.0/1", observing standard time (IST, 1115 +01) in summer and daylight saving time (GMT, +00) in winter. As 1116 a partial workaround, a writer can output data for the equivalent 1117 of the POSIX TZ string "GMT0IST,M3.5.0/1,M10.5.0", thus swapping 1118 standard and daylight saving time. Although this workaround 1119 misidentifies which part of the year uses daylight saving time, it 1120 records UT offsets and time zone abbreviations correctly. 1122 * Some readers generate ambiguous timestamps for positive leap 1123 seconds that occur when the UTC offset is not a multiple of 60 1124 seconds. For example, in a timezone with UTC offset +01:23:45 and 1125 with a positive leap second 78796801 (1972-06-30 23:59:60 UTC), 1126 some readers will map both 78796800 and 78796801 to 01:23:45 local 1127 time the next day instead of mapping the latter to 01:23:46, and 1128 they will map 78796815 to 01:23:59 instead of to 01:23:60. This 1129 has not yet been a practical problem, since no civil authority has 1130 observed such UTC offsets since leap seconds were introduced in 1131 1972. 1133 Some interoperability problems are reader bugs that are listed here 1134 mostly as warnings to developers of readers. 1136 * Some readers do not support negative timestamps. Developers of 1137 distributed applications should keep this in mind if they need to 1138 deal with pre-1970 data. 1140 * Some readers mishandle timestamps before the first transition that 1141 has a nonnegative timestamp. Readers that do not support negative 1142 timestamps are likely to be more prone to this problem. 1144 * Some readers mishandle time zone abbreviations like "-08" that 1145 contain '+', '-', or digits. 1147 * Some readers mishandle UT offsets that are out of the traditional 1148 range of -12 through +12 hours and so do not support locations 1149 like Kiritimati that are outside this range. 1151 * Some readers mishandle UT offsets in the range [-3599, -1] seconds 1152 from UT, because they integer-divide the offset by 3600 to get 0 1153 and then display the hour part as "+00". 1155 * Some readers mishandle UT offsets that are not a multiple of one 1156 hour, 15 minutes, or 1 minute. 1158 Appendix B. Example TZif Files 1160 The following sections contain annotated hexadecimal dumps of example 1161 TZif files. 1163 Note that these examples should only be considered informative. 1164 Although the example data entries are current as of the publication 1165 date of this document, the data will likely change in the future as 1166 leap seconds are added and changes are made to civil time. 1168 B.1. Version 1 File Representing UTC (with Leap Seconds) 1170 +========+=============+==================+========================+ 1171 | File | Hexadecimal | Record Name / | Field Value | 1172 | Offset | Octets | Field Name | | 1173 +========+=============+==================+========================+ 1174 | 000 | 54 5a 69 66 | magic | "TZif" | 1175 +--------+-------------+------------------+------------------------+ 1176 | 004 | 00 | version | 0 (1) | 1177 +--------+-------------+------------------+------------------------+ 1178 | 005 | 00 00 00 00 | | | 1179 | | 00 00 00 00 | | | 1180 | | 00 00 00 00 | | | 1181 | | 00 00 00 | | | 1182 +--------+-------------+------------------+------------------------+ 1183 | 020 | 00 00 00 01 | isutcnt | 1 | 1184 +--------+-------------+------------------+------------------------+ 1185 | 024 | 00 00 00 01 | isstdcnt | 1 | 1186 +--------+-------------+------------------+------------------------+ 1187 | 028 | 00 00 00 1b | leapcnt | 27 | 1188 +--------+-------------+------------------+------------------------+ 1189 | 032 | 00 00 00 00 | timecnt | 0 | 1190 +--------+-------------+------------------+------------------------+ 1191 | 036 | 00 00 00 01 | typecnt | 1 | 1192 +--------+-------------+------------------+------------------------+ 1193 | 040 | 00 00 00 04 | charcnt | 4 | 1194 +--------+-------------+------------------+------------------------+ 1195 +--------+-------------+------------------+------------------------+ 1196 | | | localtimetype[0] | | 1197 +--------+-------------+------------------+------------------------+ 1198 | 044 | 00 00 00 00 | utoff | 0 (+00:00) | 1199 +--------+-------------+------------------+------------------------+ 1200 | 048 | 00 | isdst | 0 (no) | 1201 +--------+-------------+------------------+------------------------+ 1202 | 049 | 00 | desigidx | 0 | 1203 +--------+-------------+------------------+------------------------+ 1204 +--------+-------------+------------------+------------------------+ 1205 | 050 | 55 54 43 00 | designations[0] | "UTC" | 1206 +--------+-------------+------------------+------------------------+ 1207 +--------+-------------+------------------+------------------------+ 1208 | | | leapsecond[0] | | 1209 +--------+-------------+------------------+------------------------+ 1210 | 054 | 04 b2 58 00 | occurrence | 78796800 | 1211 | | | | (1972-06-30T23:59:60Z) | 1212 +--------+-------------+------------------+------------------------+ 1213 | 058 | 00 00 00 01 | correction | 1 | 1214 +--------+-------------+------------------+------------------------+ 1215 +--------+-------------+------------------+------------------------+ 1216 | | | leapsecond[1] | | 1217 +--------+-------------+------------------+------------------------+ 1218 | 062 | 05 a4 ec 01 | occurrence | 94694401 | 1219 | | | | (1972-12-31T23:59:60Z) | 1220 +--------+-------------+------------------+------------------------+ 1221 | 066 | 00 00 00 02 | correction | 2 | 1222 +--------+-------------+------------------+------------------------+ 1223 +--------+-------------+------------------+------------------------+ 1224 | | | leapsecond[2] | | 1225 +--------+-------------+------------------+------------------------+ 1226 | 070 | 07 86 1f 82 | occurrence | 126230402 | 1227 | | | | (1973-12-31T23:59:60Z) | 1228 +--------+-------------+------------------+------------------------+ 1229 | 074 | 00 00 00 03 | correction | 3 | 1230 +--------+-------------+------------------+------------------------+ 1231 +--------+-------------+------------------+------------------------+ 1232 | | | leapsecond[3] | | 1233 +--------+-------------+------------------+------------------------+ 1234 | 078 | 09 67 53 03 | occurrence | 157766403 | 1235 | | | | (1974-12-31T23:59:60Z) | 1236 +--------+-------------+------------------+------------------------+ 1237 | 082 | 00 00 00 04 | correction | 4 | 1238 +--------+-------------+------------------+------------------------+ 1239 +--------+-------------+------------------+------------------------+ 1240 | | | leapsecond[4] | | 1241 +--------+-------------+------------------+------------------------+ 1242 | 086 | 0b 48 86 84 | occurrence | 189302404 | 1243 | | | | (1975-12-31T23:59:60Z) | 1244 +--------+-------------+------------------+------------------------+ 1245 | 090 | 00 00 00 05 | correction | 5 | 1246 +--------+-------------+------------------+------------------------+ 1247 +--------+-------------+------------------+------------------------+ 1248 | | | leapsecond[5] | | 1249 +--------+-------------+------------------+------------------------+ 1250 | 094 | 0d 2b 0b 85 | occurrence | 220924805 | 1251 | | | | (1976-12-31T23:59:60Z) | 1252 +--------+-------------+------------------+------------------------+ 1253 | 098 | 00 00 00 06 | correction | 6 | 1254 +--------+-------------+------------------+------------------------+ 1255 +--------+-------------+------------------+------------------------+ 1256 | | | leapsecond[6] | | 1257 +--------+-------------+------------------+------------------------+ 1258 | 102 | 0f 0c 3f 06 | occurrence | 252460806 | 1259 | | | | (1977-12-31T23:59:60Z) | 1260 +--------+-------------+------------------+------------------------+ 1261 | 106 | 00 00 00 07 | correction | 7 | 1262 +--------+-------------+------------------+------------------------+ 1263 +--------+-------------+------------------+------------------------+ 1264 | | | leapsecond[7] | | 1265 +--------+-------------+------------------+------------------------+ 1266 | 110 | 10 ed 72 87 | occurrence | 283996807 | 1267 | | | | (1978-12-31T23:59:60Z) | 1268 +--------+-------------+------------------+------------------------+ 1269 | 114 | 00 00 00 08 | correction | 8 | 1270 +--------+-------------+------------------+------------------------+ 1271 +--------+-------------+------------------+------------------------+ 1272 | | | leapsecond[8] | | 1273 +--------+-------------+------------------+------------------------+ 1274 | 118 | 12 ce a6 08 | occurrence | 315532808 | 1275 | | | | (1979-12-31T23:59:60Z) | 1276 +--------+-------------+------------------+------------------------+ 1277 | 122 | 00 00 00 09 | correction | 9 | 1278 +--------+-------------+------------------+------------------------+ 1279 +--------+-------------+------------------+------------------------+ 1280 | | | leapsecond[9] | | 1281 +--------+-------------+------------------+------------------------+ 1282 | 126 | 15 9f ca 89 | occurrence | 362793609 | 1283 | | | | (1981-06-30T23:59:60Z) | 1284 +--------+-------------+------------------+------------------------+ 1285 | 130 | 00 00 00 0a | correction | 10 | 1286 +--------+-------------+------------------+------------------------+ 1287 +--------+-------------+------------------+------------------------+ 1288 | | | leapsecond[10] | | 1289 +--------+-------------+------------------+------------------------+ 1290 | 134 | 17 80 fe 0a | occurrence | 394329610 | 1291 | | | | (1982-06-30T23:59:60Z) | 1292 +--------+-------------+------------------+------------------------+ 1293 | 138 | 00 00 00 0b | correction | 11 | 1294 +--------+-------------+------------------+------------------------+ 1295 +--------+-------------+------------------+------------------------+ 1296 | | | leapsecond[11] | | 1297 +--------+-------------+------------------+------------------------+ 1298 | 142 | 19 62 31 8b | occurrence | 425865611 | 1299 | | | | (1983-06-30T23:59:60Z) | 1300 +--------+-------------+------------------+------------------------+ 1301 | 146 | 00 00 00 0c | correction | 12 | 1302 +--------+-------------+------------------+------------------------+ 1303 +--------+-------------+------------------+------------------------+ 1304 | | | leapsecond[12] | | 1305 +--------+-------------+------------------+------------------------+ 1306 | 150 | 1d 25 ea 0c | occurrence | 489024012 | 1307 | | | | (1985-06-30T23:59:60Z) | 1308 +--------+-------------+------------------+------------------------+ 1309 | 154 | 00 00 00 0d | correction | 13 | 1310 +--------+-------------+------------------+------------------------+ 1311 +--------+-------------+------------------+------------------------+ 1312 | | | leapsecond[13] | | 1313 +--------+-------------+------------------+------------------------+ 1314 | 158 | 21 da e5 0d | occurrence | 567993613 | 1315 | | | | (1987-12-31T23:59:60Z) | 1316 +--------+-------------+------------------+------------------------+ 1317 | 162 | 00 00 00 0e | correction | 14 | 1318 +--------+-------------+------------------+------------------------+ 1319 +--------+-------------+------------------+------------------------+ 1320 | | | leapsecond[14] | | 1321 +--------+-------------+------------------+------------------------+ 1322 | 166 | 25 9e 9d 8e | occurrence | 631152014 | 1323 | | | | (1989-12-31T23:59:60Z) | 1324 +--------+-------------+------------------+------------------------+ 1325 | 170 | 00 00 00 0f | correction | 15 | 1326 +--------+-------------+------------------+------------------------+ 1327 +--------+-------------+------------------+------------------------+ 1328 | | | leapsecond[15] | | 1329 +--------+-------------+------------------+------------------------+ 1330 | 174 | 27 7f d1 0f | occurrence | 662688015 | 1331 | | | | (1990-12-31T23:59:60Z) | 1332 +--------+-------------+------------------+------------------------+ 1333 | 178 | 00 00 00 10 | correction | 16 | 1334 +--------+-------------+------------------+------------------------+ 1335 +--------+-------------+------------------+------------------------+ 1336 | | | leapsecond[16] | | 1337 +--------+-------------+------------------+------------------------+ 1338 | 182 | 2a 50 f5 90 | occurrence | 709948816 | 1339 | | | | (1992-06-30T23:59:60Z) | 1340 +--------+-------------+------------------+------------------------+ 1341 | 186 | 00 00 00 11 | correction | 17 | 1342 +--------+-------------+------------------+------------------------+ 1343 +--------+-------------+------------------+------------------------+ 1344 | | | leapsecond[17] | | 1345 +--------+-------------+------------------+------------------------+ 1346 | 190 | 2c 32 29 11 | occurrence | 741484817 | 1347 | | | | (1993-06-30T23:59:60Z) | 1348 +--------+-------------+------------------+------------------------+ 1349 | 194 | 00 00 00 12 | correction | 18 | 1350 +--------+-------------+------------------+------------------------+ 1351 +--------+-------------+------------------+------------------------+ 1352 | | | leapsecond[18] | | 1353 +--------+-------------+------------------+------------------------+ 1354 | 198 | 2e 13 5c 92 | occurrence | 773020818 | 1355 | | | | (1994-06-30T23:59:60Z) | 1356 +--------+-------------+------------------+------------------------+ 1357 | 202 | 00 00 00 13 | correction | 19 | 1358 +--------+-------------+------------------+------------------------+ 1359 +--------+-------------+------------------+------------------------+ 1360 | | | leapsecond[19] | | 1361 +--------+-------------+------------------+------------------------+ 1362 | 206 | 30 e7 24 13 | occurrence | 820454419 | 1363 | | | | (1995-12-31T23:59:60Z) | 1364 +--------+-------------+------------------+------------------------+ 1365 | 210 | 00 00 00 14 | correction | 20 | 1366 +--------+-------------+------------------+------------------------+ 1367 +--------+-------------+------------------+------------------------+ 1368 | | | leapsecond[20] | | 1369 +--------+-------------+------------------+------------------------+ 1370 | 214 | 33 b8 48 94 | occurrence | 867715220 | 1371 | | | | (1997-06-30T23:59:60Z) | 1372 +--------+-------------+------------------+------------------------+ 1373 | 218 | 00 00 00 15 | correction | 21 | 1374 +--------+-------------+------------------+------------------------+ 1375 +--------+-------------+------------------+------------------------+ 1376 | | | leapsecond[21] | | 1377 +--------+-------------+------------------+------------------------+ 1378 | 222 | 36 8c 10 15 | occurrence | 915148821 | 1379 | | | | (1998-12-31T23:59:60Z) | 1380 +--------+-------------+------------------+------------------------+ 1381 | 226 | 00 00 00 16 | correction | 22 | 1382 +--------+-------------+------------------+------------------------+ 1383 +--------+-------------+------------------+------------------------+ 1384 | | | leapsecond[22] | | 1385 +--------+-------------+------------------+------------------------+ 1386 | 230 | 43 b7 1b 96 | occurrence | 1136073622 | 1387 | | | | (2005-12-31T23:59:60Z) | 1388 +--------+-------------+------------------+------------------------+ 1389 | 234 | 00 00 00 17 | correction | 23 | 1390 +--------+-------------+------------------+------------------------+ 1391 +--------+-------------+------------------+------------------------+ 1392 | | | leapsecond[23] | | 1393 +--------+-------------+------------------+------------------------+ 1394 | 238 | 49 5c 07 97 | occurrence | 1230768023 | 1395 | | | | (2008-12-31T23:59:60Z) | 1396 +--------+-------------+------------------+------------------------+ 1397 | 242 | 00 00 00 18 | correction | 24 | 1398 +--------+-------------+------------------+------------------------+ 1399 +--------+-------------+------------------+------------------------+ 1400 | | | leapsecond[24] | | 1401 +--------+-------------+------------------+------------------------+ 1402 | 246 | 4f ef 93 18 | occurrence | 1341100824 | 1403 | | | | (2012-06-30T23:59:60Z) | 1404 +--------+-------------+------------------+------------------------+ 1405 | 250 | 00 00 00 19 | correction | 25 | 1406 +--------+-------------+------------------+------------------------+ 1407 +--------+-------------+------------------+------------------------+ 1408 | | | leapsecond[25] | | 1409 +--------+-------------+------------------+------------------------+ 1410 | 254 | 55 93 2d 99 | occurrence | 1435708825 | 1411 | | | | (2015-06-30T23:59:60Z) | 1412 +--------+-------------+------------------+------------------------+ 1413 | 258 | 00 00 00 1a | correction | 26 | 1414 +--------+-------------+------------------+------------------------+ 1415 +--------+-------------+------------------+------------------------+ 1416 | | | leapsecond[26] | | 1417 +--------+-------------+------------------+------------------------+ 1418 | 262 | 58 68 46 9a | occurrence | 1483228826 | 1419 | | | | (2016-12-31T23:59:60Z) | 1420 +--------+-------------+------------------+------------------------+ 1421 | 266 | 00 00 00 1b | correction | 27 | 1422 +--------+-------------+------------------+------------------------+ 1423 +--------+-------------+------------------+------------------------+ 1424 | 270 | 00 | standard/wall[0] | 0 (wall) | 1425 +--------+-------------+------------------+------------------------+ 1426 +--------+-------------+------------------+------------------------+ 1427 | 271 | 00 | UT/local[0] | 0 (local) | 1428 +--------+-------------+------------------+------------------------+ 1430 Table 1 1432 To determine TAI corresponding to 2000-01-01T00:00:00Z 1433 (UNIX time = 946684800), the following procedure would be followed: 1435 1. Find the latest leap-second occurrence prior to the time of 1436 interest (leapsecond[21]) and note the correction value 1437 (LEAPCORR = 22). 1439 2. Add LEAPCORR + 10 to the time of interest to yield TAI of 1440 2000-01-01T00:00:32. 1442 B.2. Version 2 File Representing Pacific/Honolulu 1444 +========+=============+==================+========================+ 1445 | File | Hexadecimal | Record Name / | Field Value | 1446 | Offset | Octets | Field Name | | 1447 +========+=============+==================+========================+ 1448 | 000 | 54 5a 69 66 | magic | "TZif" | 1449 +--------+-------------+------------------+------------------------+ 1450 | 004 | 32 | version | '2' (2) | 1451 +--------+-------------+------------------+------------------------+ 1452 | 005 | 00 00 00 00 | | | 1453 | | 00 00 00 00 | | | 1454 | | 00 00 00 00 | | | 1455 | | 00 00 00 | | | 1456 +--------+-------------+------------------+------------------------+ 1457 | 020 | 00 00 00 06 | isutcnt | 6 | 1458 +--------+-------------+------------------+------------------------+ 1459 | 024 | 00 00 00 06 | isstdcnt | 6 | 1460 +--------+-------------+------------------+------------------------+ 1461 | 028 | 00 00 00 00 | leapcnt | 0 | 1462 +--------+-------------+------------------+------------------------+ 1463 | 032 | 00 00 00 07 | timecnt | 7 | 1464 +--------+-------------+------------------+------------------------+ 1465 | 036 | 00 00 00 06 | typecnt | 6 | 1466 +--------+-------------+------------------+------------------------+ 1467 | 040 | 00 00 00 14 | charcnt | 20 | 1468 +--------+-------------+------------------+------------------------+ 1469 +--------+-------------+------------------+------------------------+ 1470 | 044 | 80 00 00 00 | trans time[0] | -2147483648 | 1471 | | | | (1901-12-13T20:45:52Z) | 1472 +--------+-------------+------------------+------------------------+ 1473 | 048 | bb 05 43 48 | trans time[1] | -1157283000 | 1474 | | | | (1933-04-30T12:30:00Z) | 1475 +--------+-------------+------------------+------------------------+ 1476 | 052 | bb 21 71 58 | trans time[2] | -1155436200 | 1477 | | | | (1933-05-21T21:30:00Z) | 1478 +--------+-------------+------------------+------------------------+ 1479 | 056 | cb 89 3d c8 | trans time[3] | -880198200 | 1480 | | | | (1942-02-09T12:30:00Z) | 1481 +--------+-------------+------------------+------------------------+ 1482 | 060 | d2 23 f4 70 | trans time[4] | -769395600 | 1483 | | | | (1945-08-14T23:00:00Z) | 1484 +--------+-------------+------------------+------------------------+ 1485 | 064 | d2 61 49 38 | trans time[5] | -765376200 | 1486 | | | | (1945-09-30T11:30:00Z) | 1487 +--------+-------------+------------------+------------------------+ 1488 | 068 | d5 8d 73 48 | trans time[6] | -712150200 | 1489 | | | | (1947-06-08T12:30:00Z) | 1490 +--------+-------------+------------------+------------------------+ 1491 +--------+-------------+------------------+------------------------+ 1492 | 072 | 01 | trans type[0] | 1 | 1493 +--------+-------------+------------------+------------------------+ 1494 | 073 | 02 | trans type[1] | 2 | 1495 +--------+-------------+------------------+------------------------+ 1496 | 074 | 01 | trans type[2] | 1 | 1497 +--------+-------------+------------------+------------------------+ 1498 | 075 | 03 | trans type[3] | 3 | 1499 +--------+-------------+------------------+------------------------+ 1500 | 076 | 04 | trans type[4] | 4 | 1501 +--------+-------------+------------------+------------------------+ 1502 | 077 | 01 | trans type[5] | 1 | 1503 +--------+-------------+------------------+------------------------+ 1504 | 078 | 05 | trans type[6] | 5 | 1505 +--------+-------------+------------------+------------------------+ 1506 +--------+-------------+------------------+------------------------+ 1507 | | | localtimetype[0] | | 1508 +--------+-------------+------------------+------------------------+ 1509 | 079 | ff ff 6c 02 | utoff | -37886 (-10:21:26) | 1510 +--------+-------------+------------------+------------------------+ 1511 | 083 | 00 | isdst | 0 (no) | 1512 +--------+-------------+------------------+------------------------+ 1513 | 084 | 00 | desigidx | 0 | 1514 +--------+-------------+------------------+------------------------+ 1515 +--------+-------------+------------------+------------------------+ 1516 | | | localtimetype[1] | | 1517 +--------+-------------+------------------+------------------------+ 1518 | 085 | ff ff 6c 58 | utoff | -37800 (-10:30) | 1519 +--------+-------------+------------------+------------------------+ 1520 | 089 | 00 | isdst | 0 (no) | 1521 +--------+-------------+------------------+------------------------+ 1522 | 090 | 04 | desigidx | 4 | 1523 +--------+-------------+------------------+------------------------+ 1524 +--------+-------------+------------------+------------------------+ 1525 | | | localtimetype[2] | | 1526 +--------+-------------+------------------+------------------------+ 1527 | 091 | ff ff 7a 68 | utoff | -34200 (-09:30) | 1528 +--------+-------------+------------------+------------------------+ 1529 | 095 | 01 | isdst | 1 (yes) | 1530 +--------+-------------+------------------+------------------------+ 1531 | 096 | 08 | desigidx | 8 | 1532 +--------+-------------+------------------+------------------------+ 1533 +--------+-------------+------------------+------------------------+ 1534 | | | localtimetype[3] | | 1535 +--------+-------------+------------------+------------------------+ 1536 | 097 | ff ff 7a 68 | utoff | -34200 (-09:30) | 1537 +--------+-------------+------------------+------------------------+ 1538 | 101 | 01 | isdst | 1 (yes) | 1539 +--------+-------------+------------------+------------------------+ 1540 | 102 | 0c | desigidx | 12 | 1541 +--------+-------------+------------------+------------------------+ 1542 +--------+-------------+------------------+------------------------+ 1543 | | | localtimetype[4] | | 1544 +--------+-------------+------------------+------------------------+ 1545 | 103 | ff ff 7a 68 | utoff | -34200 (-09:30) | 1546 +--------+-------------+------------------+------------------------+ 1547 | 107 | 01 | isdst | 1 (yes) | 1548 +--------+-------------+------------------+------------------------+ 1549 | 108 | 10 | desigidx | 16 | 1550 +--------+-------------+------------------+------------------------+ 1551 +--------+-------------+------------------+------------------------+ 1552 | | | localtimetype[5] | | 1553 +--------+-------------+------------------+------------------------+ 1554 | 109 | ff ff 73 60 | utoff | -36000 (-10:00) | 1555 +--------+-------------+------------------+------------------------+ 1556 | 113 | 00 | isdst | 0 (no) | 1557 +--------+-------------+------------------+------------------------+ 1558 | 114 | 04 | desigidx | 4 | 1559 +--------+-------------+------------------+------------------------+ 1560 +--------+-------------+------------------+------------------------+ 1561 | 115 | 4c 4d 54 00 | designations[0] | "LMT" | 1562 +--------+-------------+------------------+------------------------+ 1563 | 119 | 48 53 54 00 | designations[4] | "HST" | 1564 +--------+-------------+------------------+------------------------+ 1565 | 123 | 48 44 54 00 | designations[8] | "HDT" | 1566 +--------+-------------+------------------+------------------------+ 1567 | 127 | 48 57 54 00 | designations[12] | "HWT" | 1568 +--------+-------------+------------------+------------------------+ 1569 | 131 | 48 50 54 00 | designations[16] | "HPT" | 1570 +--------+-------------+------------------+------------------------+ 1571 +--------+-------------+------------------+------------------------+ 1572 | 135 | 00 | standard/wall[0] | 0 (wall) | 1573 +--------+-------------+------------------+------------------------+ 1574 | 136 | 00 | standard/wall[1] | 0 (wall) | 1575 +--------+-------------+------------------+------------------------+ 1576 | 137 | 00 | standard/wall[2] | 0 (wall) | 1577 +--------+-------------+------------------+------------------------+ 1578 | 138 | 00 | standard/wall[3] | 0 (wall) | 1579 +--------+-------------+------------------+------------------------+ 1580 | 139 | 01 | standard/wall[4] | 1 (standard) | 1581 +--------+-------------+------------------+------------------------+ 1582 | 140 | 00 | standard/wall[5] | 0 (wall) | 1583 +--------+-------------+------------------+------------------------+ 1584 +--------+-------------+------------------+------------------------+ 1585 | 141 | 00 | UT/local[0] | 0 (local) | 1586 +--------+-------------+------------------+------------------------+ 1587 | 142 | 00 | UT/local[1] | 0 (local) | 1588 +--------+-------------+------------------+------------------------+ 1589 | 143 | 00 | UT/local[2] | 0 (local) | 1590 +--------+-------------+------------------+------------------------+ 1591 | 144 | 00 | UT/local[3] | 0 (local) | 1592 +--------+-------------+------------------+------------------------+ 1593 | 145 | 01 | UT/local[4] | 1 (UT) | 1594 +--------+-------------+------------------+------------------------+ 1595 | 146 | 00 | UT/local[5] | 0 (local) | 1596 +--------+-------------+------------------+------------------------+ 1597 +--------+-------------+------------------+------------------------+ 1598 | 147 | 54 5a 69 66 | magic | "TZif" | 1599 +--------+-------------+------------------+------------------------+ 1600 | 151 | 32 | version | '2' (2) | 1601 +--------+-------------+------------------+------------------------+ 1602 | 152 | 00 00 00 00 | | | 1603 | | 00 00 00 00 | | | 1604 | | 00 00 00 00 | | | 1605 | | 00 00 00 | | | 1606 +--------+-------------+------------------+------------------------+ 1607 | 167 | 00 00 00 06 | isutcnt | 6 | 1608 +--------+-------------+------------------+------------------------+ 1609 | 171 | 00 00 00 06 | isstdcnt | 6 | 1610 +--------+-------------+------------------+------------------------+ 1611 | 175 | 00 00 00 00 | leapcnt | 0 | 1612 +--------+-------------+------------------+------------------------+ 1613 | 179 | 00 00 00 07 | timecnt | 7 | 1614 +--------+-------------+------------------+------------------------+ 1615 | 183 | 00 00 00 06 | typecnt | 6 | 1616 +--------+-------------+------------------+------------------------+ 1617 | 187 | 00 00 00 14 | charcnt | 20 | 1618 +--------+-------------+------------------+------------------------+ 1619 +--------+-------------+------------------+------------------------+ 1620 | 191 | ff ff ff ff | trans time[0] | -2334101314 | 1621 | | 74 e0 70 be | | (1896-01-13T22:31:26Z) | 1622 +--------+-------------+------------------+------------------------+ 1623 | 199 | ff ff ff ff | trans time[1] | -1157283000 | 1624 | | bb 05 43 48 | | (1933-04-30T12:30:00Z) | 1625 +--------+-------------+------------------+------------------------+ 1626 | 207 | ff ff ff ff | trans time[2] | -1155436200 | 1627 | | bb 21 71 58 | | (1933-05-21T21:30:00Z) | 1628 +--------+-------------+------------------+------------------------+ 1629 | 215 | ff ff ff ff | trans time[3] | -880198200 | 1630 | | cb 89 3d c8 | | (1942-02-09T12:30:00Z) | 1631 +--------+-------------+------------------+------------------------+ 1632 | 223 | ff ff ff ff | trans time[4] | -769395600 | 1633 | | d2 23 f4 70 | | (1945-08-14T23:00:00Z) | 1634 +--------+-------------+------------------+------------------------+ 1635 | 231 | ff ff ff ff | trans time[5] | -765376200 | 1636 | | d2 61 49 38 | | (1945-09-30T11:30:00Z) | 1637 +--------+-------------+------------------+------------------------+ 1638 | 239 | ff ff ff ff | trans time[6] | -712150200 | 1639 | | d5 8d 73 48 | | (1947-06-08T12:30:00Z) | 1640 +--------+-------------+------------------+------------------------+ 1641 +--------+-------------+------------------+------------------------+ 1642 | 247 | 01 | trans type[0] | 1 | 1643 +--------+-------------+------------------+------------------------+ 1644 | 248 | 02 | trans type[1] | 2 | 1645 +--------+-------------+------------------+------------------------+ 1646 | 249 | 01 | trans type[2] | 1 | 1647 +--------+-------------+------------------+------------------------+ 1648 | 250 | 03 | trans type[3] | 3 | 1649 +--------+-------------+------------------+------------------------+ 1650 | 251 | 04 | trans type[4] | 4 | 1651 +--------+-------------+------------------+------------------------+ 1652 | 252 | 01 | trans type[5] | 1 | 1653 +--------+-------------+------------------+------------------------+ 1654 | 253 | 05 | trans type[6] | 5 | 1655 +--------+-------------+------------------+------------------------+ 1656 +--------+-------------+------------------+------------------------+ 1657 | | | localtimetype[0] | | 1658 +--------+-------------+------------------+------------------------+ 1659 | 254 | ff ff 6c 02 | utoff | -37886 (-10:21:26) | 1660 +--------+-------------+------------------+------------------------+ 1661 | 258 | 00 | isdst | 0 (no) | 1662 +--------+-------------+------------------+------------------------+ 1663 | 259 | 00 | desigidx | 0 | 1664 +--------+-------------+------------------+------------------------+ 1665 +--------+-------------+------------------+------------------------+ 1666 | | | localtimetype[1] | | 1667 +--------+-------------+------------------+------------------------+ 1668 | 260 | ff ff 6c 58 | utoff | -37800 (-10:30) | 1669 +--------+-------------+------------------+------------------------+ 1670 | 264 | 00 | isdst | 0 (no) | 1671 +--------+-------------+------------------+------------------------+ 1672 | 265 | 04 | desigidx | 4 | 1673 +--------+-------------+------------------+------------------------+ 1674 +--------+-------------+------------------+------------------------+ 1675 | | | localtimetype[2] | | 1676 +--------+-------------+------------------+------------------------+ 1677 | 266 | ff ff 7a 68 | utoff | -34200 (-09:30) | 1678 +--------+-------------+------------------+------------------------+ 1679 | 270 | 01 | isdst | 1 (yes) | 1680 +--------+-------------+------------------+------------------------+ 1681 | 271 | 08 | desigidx | 8 | 1682 +--------+-------------+------------------+------------------------+ 1683 +--------+-------------+------------------+------------------------+ 1684 | | | localtimetype[3] | | 1685 +--------+-------------+------------------+------------------------+ 1686 | 272 | ff ff 7a 68 | utoff | -34200 (-09:30) | 1687 +--------+-------------+------------------+------------------------+ 1688 | 276 | 01 | isdst | 1 (yes) | 1689 +--------+-------------+------------------+------------------------+ 1690 | 277 | 0c | desigidx | 12 | 1691 +--------+-------------+------------------+------------------------+ 1692 +--------+-------------+------------------+------------------------+ 1693 | | | localtimetype[4] | | 1694 +--------+-------------+------------------+------------------------+ 1695 | 278 | ff ff 7a 68 | utoff | -34200 (-09:30) | 1696 +--------+-------------+------------------+------------------------+ 1697 | 282 | 01 | isdst | 1 (yes) | 1698 +--------+-------------+------------------+------------------------+ 1699 | 283 | 10 | desigidx | 16 | 1700 +--------+-------------+------------------+------------------------+ 1701 +--------+-------------+------------------+------------------------+ 1702 | | | localtimetype[5] | | 1703 +--------+-------------+------------------+------------------------+ 1704 | 284 | ff ff 73 60 | utoff | -36000 (-10:00) | 1705 +--------+-------------+------------------+------------------------+ 1706 | 288 | 00 | isdst | 0 (no) | 1707 +--------+-------------+------------------+------------------------+ 1708 | 289 | 04 | desigidx | 4 | 1709 +--------+-------------+------------------+------------------------+ 1710 +--------+-------------+------------------+------------------------+ 1711 | 290 | 4c 4d 54 00 | designations[0] | "LMT" | 1712 +--------+-------------+------------------+------------------------+ 1713 | 294 | 48 53 54 00 | designations[4] | "HST" | 1714 +--------+-------------+------------------+------------------------+ 1715 | 298 | 48 44 54 00 | designations[8] | "HDT" | 1716 +--------+-------------+------------------+------------------------+ 1717 | 302 | 48 57 54 00 | designations[12] | "HWT" | 1718 +--------+-------------+------------------+------------------------+ 1719 | 306 | 48 50 54 00 | designations[16] | "HPT" | 1720 +--------+-------------+------------------+------------------------+ 1721 +--------+-------------+------------------+------------------------+ 1722 | 310 | 00 | standard/wall[0] | 0 (wall) | 1723 +--------+-------------+------------------+------------------------+ 1724 | 311 | 00 | standard/wall[1] | 0 (wall) | 1725 +--------+-------------+------------------+------------------------+ 1726 | 312 | 00 | standard/wall[2] | 0 (wall) | 1727 +--------+-------------+------------------+------------------------+ 1728 | 313 | 00 | standard/wall[3] | 0 (wall) | 1729 +--------+-------------+------------------+------------------------+ 1730 | 314 | 01 | standard/wall[4] | 1 (standard) | 1731 +--------+-------------+------------------+------------------------+ 1732 | 315 | 00 | standard/wall[5] | 0 (wall) | 1733 +--------+-------------+------------------+------------------------+ 1734 +--------+-------------+------------------+------------------------+ 1735 | 316 | 00 | UT/local[0] | 0 (local) | 1736 +--------+-------------+------------------+------------------------+ 1737 | 317 | 00 | UT/local[1] | 0 (local) | 1738 +--------+-------------+------------------+------------------------+ 1739 | 318 | 00 | UT/local[2] | 0 (local) | 1740 +--------+-------------+------------------+------------------------+ 1741 | 319 | 00 | UT/local[3] | 0 (local) | 1742 +--------+-------------+------------------+------------------------+ 1743 | 320 | 01 | UT/local[4] | 1 (UT) | 1744 +--------+-------------+------------------+------------------------+ 1745 | 321 | 00 | UT/local[5] | 0 (local) | 1746 +--------+-------------+------------------+------------------------+ 1747 +--------+-------------+------------------+------------------------+ 1748 | 322 | 0a | NL | '\n' | 1749 +--------+-------------+------------------+------------------------+ 1750 | 323 | 48 53 54 31 | TZ string | "HST10" | 1751 | | 30 | | | 1752 +--------+-------------+------------------+------------------------+ 1753 | 328 | 0a | NL | '\n' | 1754 +--------+-------------+------------------+------------------------+ 1756 Table 2 1758 To determine the local time in this time zone corresponding to 1759 1933-05-04T12:00:00Z (UNIX time = -1156939200), the following 1760 procedure would be followed: 1762 1. Find the latest time transition prior to the time of interest 1763 (trans time[1]). 1765 2. Reference the corresponding transition type (trans type[1]) to 1766 determine the local time type index (2). 1768 3. Reference the corresponding local time type (localtimetype[2]) to 1769 determine the offset from UTC (-09:30), the daylight saving 1770 indicator (1 = yes), and the index into the time zone designation 1771 strings (8). 1773 4. Look up the corresponding time zone designation string 1774 (designations[8] = "HDT"). 1776 5. Add the UTC offset to the time of interest to yield a local 1777 daylight saving time of 1933-05-04T02:30:00-09:30 (HDT). 1779 To determine the local time in this time zone corresponding to 1780 2019-01-01T00:00:00Z (UNIX time = 1546300800), the following 1781 procedure would be followed: 1783 1. Find the latest time transition prior to the time of interest 1784 (there is no such transition). 1786 2. Look up the TZ string in the footer ("HST10"), which indicates 1787 that the time zone designation is "HST" year-round, and the 1788 offset to UTC is 10:00. 1790 3. Subtract the UTC offset from the time of interest to yield a 1791 standard local time of 2018-12-31T14:00:00-10:00 (HST). 1793 B.3. Truncated Version 3 File Representing Asia/Jerusalem 1795 The following TZif file has been truncated to start on 1796 2038-01-01T00:00:00Z. 1798 In this example: 1800 * The start time value can not be represented using 32 bits, so the 1801 version 1 header contains only the required minimum data, which 1802 will be ignored by readers. 1804 * The version 3 header leverages the fact that by specifying 1805 'isutcnt' and 'isstdcnt' as zero, all transition times associated 1806 with local time types are assumed to be specified as local wall- 1807 clock time (see the definitions of UT/local indicators and 1808 standard/wall indicators in Section 3.2). 1810 * The TZ string value has been line-wrapped for presentation 1811 purposes only. 1813 +========+=============+==================+========================+ 1814 | File | Hexadecimal | Record Name / | Field Value | 1815 | Offset | Octets | Field Name | | 1816 +========+=============+==================+========================+ 1817 | 000 | 54 5a 69 66 | magic | "TZif" | 1818 +--------+-------------+------------------+------------------------+ 1819 | 004 | 33 | version | '3' (3) | 1820 +--------+-------------+------------------+------------------------+ 1821 | 005 | 00 00 00 00 | | | 1822 | | 00 00 00 00 | | | 1823 | | 00 00 00 00 | | | 1824 | | 00 00 00 | | | 1825 +--------+-------------+------------------+------------------------+ 1826 | 020 | 00 00 00 00 | isutcnt | 0 | 1827 +--------+-------------+------------------+------------------------+ 1828 | 024 | 00 00 00 00 | isstdcnt | 0 | 1829 +--------+-------------+------------------+------------------------+ 1830 | 028 | 00 00 00 00 | leapcnt | 0 | 1831 +--------+-------------+------------------+------------------------+ 1832 | 032 | 00 00 00 00 | timecnt | 0 | 1833 +--------+-------------+------------------+------------------------+ 1834 | 036 | 00 00 00 01 | typecnt | 1 | 1835 +--------+-------------+------------------+------------------------+ 1836 | 040 | 00 00 00 01 | charcnt | 1 | 1837 +--------+-------------+------------------+------------------------+ 1838 +--------+-------------+------------------+------------------------+ 1839 | | | localtimetype[0] | | 1840 +--------+-------------+------------------+------------------------+ 1841 | 044 | 00 00 00 00 | utoff | 0 (+00:00) | 1842 +--------+-------------+------------------+------------------------+ 1843 | 048 | 00 | isdst | 0 (no) | 1844 +--------+-------------+------------------+------------------------+ 1845 | 049 | 00 | desigidx | 0 | 1846 +--------+-------------+------------------+------------------------+ 1847 +--------+-------------+------------------+------------------------+ 1848 | 050 | 00 | designations[0] | "" | 1849 +--------+-------------+------------------+------------------------+ 1850 +--------+-------------+------------------+------------------------+ 1851 | 051 | 54 5a 69 66 | magic | "TZif" | 1852 +--------+-------------+------------------+------------------------+ 1853 | 055 | 33 | version | '3' (3) | 1854 +--------+-------------+------------------+------------------------+ 1855 | 056 | 00 00 00 00 | | | 1856 | | 00 00 00 00 | | | 1857 | | 00 00 00 00 | | | 1858 | | 00 00 00 | | | 1859 +--------+-------------+------------------+------------------------+ 1860 | 071 | 00 00 00 00 | isutcnt | 0 | 1861 +--------+-------------+------------------+------------------------+ 1862 | 075 | 00 00 00 00 | isstdcnt | 0 | 1863 +--------+-------------+------------------+------------------------+ 1864 | 079 | 00 00 00 00 | leapcnt | 0 | 1865 +--------+-------------+------------------+------------------------+ 1866 | 083 | 00 00 00 01 | timecnt | 1 | 1867 +--------+-------------+------------------+------------------------+ 1868 | 087 | 00 00 00 01 | typecnt | 1 | 1869 +--------+-------------+------------------+------------------------+ 1870 | 091 | 00 00 00 04 | charcnt | 4 | 1871 +--------+-------------+------------------+------------------------+ 1872 +--------+-------------+------------------+------------------------+ 1873 | 095 | 00 00 00 00 | trans time[0] | 2145916800 | 1874 | | 7f e8 17 80 | | (2038-01-01T00:00:00Z) | 1875 +--------+-------------+------------------+------------------------+ 1876 +--------+-------------+------------------+------------------------+ 1877 | 103 | 00 | trans type[0] | 0 | 1878 +--------+-------------+------------------+------------------------+ 1879 +--------+-------------+------------------+------------------------+ 1880 | | | localtimetype[0] | | 1881 +--------+-------------+------------------+------------------------+ 1882 | 104 | 00 00 1c 20 | utoff | 7200 (+02:00) | 1883 +--------+-------------+------------------+------------------------+ 1884 | 108 | 00 | isdst | 0 (no) | 1885 +--------+-------------+------------------+------------------------+ 1886 | 109 | 00 | desigidx | 0 | 1887 +--------+-------------+------------------+------------------------+ 1888 +--------+-------------+------------------+------------------------+ 1889 | 110 | 49 53 54 00 | designations[0] | "IST" | 1890 +--------+-------------+------------------+------------------------+ 1891 +--------+-------------+------------------+------------------------+ 1892 | 114 | 0a | NL | '\n' | 1893 +--------+-------------+------------------+------------------------+ 1894 | 115 | 49 53 54 2d | TZ string | "IST-2IDT, | 1895 | | 32 49 44 54 | | M3.4.4/26,M10.5.0" | 1896 | | 2c 4d 33 2e | | | 1897 | | 34 2e 34 2f | | | 1898 | | 32 36 2c 4d | | | 1899 | | 31 30 2e 35 | | | 1900 | | 2e 30 | | | 1901 +--------+-------------+------------------+------------------------+ 1902 | 141 | 0a | NL | '\n' | 1903 +--------+-------------+------------------+------------------------+ 1905 Table 3 1907 B.4. Truncated Version 4 File Representing America/New_York 1909 The following TZif file has been truncated to start on 1910 2022-01-01T00:00:00Z. 1912 In this example: 1914 * The version 1 header contains only the required minimum data, 1915 which will be ignored by readers. 1917 * The version 4 header leverages the fact that by specifying 1918 'isutcnt' and 'isstdcnt' as zero, all transition times associated 1919 with local time types are assumed to be specified as local wall- 1920 clock time (see the definitions of UT/local indicators and 1921 standard/wall indicators in Section 3.2). 1923 * The first leap second occurrence is the most recent one prior to 1924 the truncation time. 1926 * The last leap second correction matches the second-to-last leap 1927 second correction, indicating the expiration time of the leap 1928 second table. 1930 * The TZ string value has been line-wrapped for presentation 1931 purposes only. 1933 +========+=============+==================+========================+ 1934 | File | Hexadecimal | Record Name / | Field Value | 1935 | Offset | Octets | Field Name | | 1936 +========+=============+==================+========================+ 1937 | 000 | 54 5a 69 66 | magic | "TZif" | 1938 +--------+-------------+------------------+------------------------+ 1939 | 004 | 34 | version | '4' (4) | 1940 +--------+-------------+------------------+------------------------+ 1941 | 005 | 00 00 00 00 | | | 1942 | | 00 00 00 00 | | | 1943 | | 00 00 00 00 | | | 1944 | | 00 00 00 | | | 1945 +--------+-------------+------------------+------------------------+ 1946 | 020 | 00 00 00 00 | isutcnt | 0 | 1947 +--------+-------------+------------------+------------------------+ 1948 | 024 | 00 00 00 00 | isstdcnt | 0 | 1949 +--------+-------------+------------------+------------------------+ 1950 | 028 | 00 00 00 00 | leapcnt | 0 | 1951 +--------+-------------+------------------+------------------------+ 1952 | 032 | 00 00 00 00 | timecnt | 0 | 1953 +--------+-------------+------------------+------------------------+ 1954 | 036 | 00 00 00 01 | typecnt | 1 | 1955 +--------+-------------+------------------+------------------------+ 1956 | 040 | 00 00 00 01 | charcnt | 1 | 1957 +--------+-------------+------------------+------------------------+ 1958 +--------+-------------+------------------+------------------------+ 1959 | | | localtimetype[0] | | 1960 +--------+-------------+------------------+------------------------+ 1961 | 044 | 00 00 00 00 | utoff | 0 (+00:00) | 1962 +--------+-------------+------------------+------------------------+ 1963 | 048 | 00 | isdst | 0 (no) | 1964 +--------+-------------+------------------+------------------------+ 1965 | 049 | 00 | desigidx | 0 | 1966 +--------+-------------+------------------+------------------------+ 1967 +--------+-------------+------------------+------------------------+ 1968 | 050 | 00 | designations[0] | "" | 1969 +--------+-------------+------------------+------------------------+ 1970 +--------+-------------+------------------+------------------------+ 1971 | 051 | 54 5a 69 66 | magic | "TZif" | 1972 +--------+-------------+------------------+------------------------+ 1973 | 055 | 34 | version | '4' (4) | 1974 +--------+-------------+------------------+------------------------+ 1975 | 056 | 00 00 00 00 | | | 1976 | | 00 00 00 00 | | | 1977 | | 00 00 00 00 | | | 1978 | | 00 00 00 | | | 1979 +--------+-------------+------------------+------------------------+ 1980 | 071 | 00 00 00 00 | isutcnt | 0 | 1981 +--------+-------------+------------------+------------------------+ 1982 | 075 | 00 00 00 00 | isstdcnt | 0 | 1983 +--------+-------------+------------------+------------------------+ 1984 | 079 | 00 00 00 02 | leapcnt | 2 | 1985 +--------+-------------+------------------+------------------------+ 1986 | 083 | 00 00 00 01 | timecnt | 1 | 1987 +--------+-------------+------------------+------------------------+ 1988 | 087 | 00 00 00 01 | typecnt | 1 | 1989 +--------+-------------+------------------+------------------------+ 1990 | 091 | 00 00 00 04 | charcnt | 4 | 1991 +--------+-------------+------------------+------------------------+ 1992 +--------+-------------+------------------+------------------------+ 1993 | 095 | 00 00 00 00 | trans time[0] | 1640995227 | 1994 | | 61 cf 99 9b | | (2022-01-01T00:00:00Z) | 1995 +--------+-------------+------------------+------------------------+ 1996 +--------+-------------+------------------+------------------------+ 1997 | 103 | 00 | trans type[0] | 0 | 1998 +--------+-------------+------------------+------------------------+ 1999 +--------+-------------+------------------+------------------------+ 2000 | | | localtimetype[0] | | 2001 +--------+-------------+------------------+------------------------+ 2002 | 104 | ff ff b9 b0 | utoff | -18000 (-05:00) | 2003 +--------+-------------+------------------+------------------------+ 2004 | 108 | 00 | isdst | 0 (no) | 2005 +--------+-------------+------------------+------------------------+ 2006 | 109 | 00 | desigidx | 0 | 2007 +--------+-------------+------------------+------------------------+ 2008 +--------+-------------+------------------+------------------------+ 2009 | 110 | 45 53 54 00 | designations[0] | "EST" | 2010 +--------+-------------+------------------+------------------------+ 2011 +--------+-------------+------------------+------------------------+ 2012 | | | leapsecond[0] | | 2013 +--------+-------------+------------------+------------------------+ 2014 | 114 | 00 00 00 00 | occurrence | 1483228826 | 2015 | | 58 68 46 9a | | (2016-12-31T23:59:60Z) | 2016 +--------+-------------+------------------+------------------------+ 2017 | 122 | 00 00 00 1b | correction | 27 | 2018 +--------+-------------+------------------+------------------------+ 2019 +--------+-------------+------------------+------------------------+ 2020 | | | leapsecond[1] | | 2021 +--------+-------------+------------------+------------------------+ 2022 | 126 | 00 00 00 00 | occurrence | 1656374427 | 2023 | | 62 ba 44 9b | | (2022-06-28T00:00:00Z) | 2024 +--------+-------------+------------------+------------------------+ 2025 | 134 | 00 00 00 1b | correction | 27 | 2026 +--------+-------------+------------------+------------------------+ 2027 +--------+-------------+------------------+------------------------+ 2028 | 138 | 0a | NL | '\n' | 2029 +--------+-------------+------------------+------------------------+ 2030 | 139 | 45 53 54 35 | TZ string | "EST5EDT, | 2031 | | 45 44 54 2c | | M3.2.0,M11.1.0" | 2032 | | 4d 33 2e 32 | | | 2033 | | 2e 30 2c 4d | | | 2034 | | 31 31 2e 31 | | | 2035 | | 2e 30 | | | 2036 +--------+-------------+------------------+------------------------+ 2037 | 161 | 0a | NL | '\n' | 2038 +--------+-------------+------------------+------------------------+ 2040 Table 4 2042 Appendix C. Changes from RFC 8536 2044 * Added specification of the version 4 format and the optional leap 2045 second table truncation and expiration, along with an example and 2046 relevant interoperability considerations. 2048 * Documented the longstanding practice that UT with designation 2049 string "-00" denotes unspecified local time. Added recommendation 2050 that this designation string should be used for timestamps 2051 excluded by TZif file truncation. 2053 * Applied erratum [Err6435]. 2055 * Addressed errata [Err6426] and [Err6757] as well as several other 2056 errors in the examples. 2058 * Clarified the all-year daylight saving time TZ string 2059 (Section 3.3.1) example and added a similar example with negative 2060 DST. 2062 * Added informational notes to Appendix B.3. 2064 * Miscellaneous editorial changes. 2066 Appendix D. Change Log 2068 This section is to be removed by RFC Editor before publication. 2070 D.1. Since rfc8536bis-04 2072 * None. 2074 D.2. Since rfc8536bis-03 2076 * Noted that erratum [Err6757] has been addressed. 2078 * Added a definition of Leap-Second, including UTC month. 2080 D.3. Since rfc8536bis-02 2082 * Documented "-00" as meaning unspecified local time. 2084 * Recommended that "-00" be used for timestamps that are unspecified 2085 due to TZif file truncation. 2087 D.4. Since rfc8536bis-01 2089 * Converted source from xml2rfc v2 to v3. 2091 * Properly line-wrapped long TZ string values in examples (with no 2092 added space). 2094 * No other substantive changes. 2096 D.5. Since rfc8536bis-00 2098 * Added specification of the version 4 format and the optional leap 2099 second table truncation and expiration, along with an example and 2100 relevant interoperability considerations. 2102 * Specified column widths in example tables. 2104 * Noted that long TZ string values in examples are line-wrapped for 2105 presentation purposes only. 2107 D.6. Since RFC 8536 2109 * Applied erratum [Err6435]. 2111 * Addressed erratum [Err6426] and several other errors in the 2112 examples. 2114 * Clarified the all-year daylight saving time TZ string 2115 (Section 3.3.1) example and added a similar example with negative 2116 DST. 2118 * Added informational notes to Appendix B.3. 2120 * Miscellaneous editorial changes. 2122 * Added text obsoleting [RFC8536]. 2124 * Added Changes from RFC 8536 (Appendix C). 2126 * Added Tim Parenti as a contributor. 2128 Acknowledgments 2130 The authors would like to thank the following individuals for 2131 contributing their ideas and support for writing this specification: 2132 Michael Douglass, Ned Freed, Guy Harris, Eliot Lear, Alexey Melnikov, 2133 and Tim Parenti. 2135 Authors' Addresses 2137 Arthur David Olson 2138 Email: arthurdavidolson@gmail.com 2140 Paul Eggert 2141 University of California, Los Angeles 2142 Email: eggert@cs.ucla.edu 2144 Kenneth Murchison 2145 Fastmail US LLC 2146 Email: murch@fastmailteam.com