summaryrefslogtreecommitdiff
path: root/Documentation
diff options
context:
space:
mode:
authorfukachan <fukachan>2001-04-05 11:05:15 +0000
committerfukachan <fukachan>2001-04-05 11:05:15 +0000
commit614ed9e4d3f90cfe7d3a0ef926f6e2667fd03261 (patch)
tree2d8179c7c1e42234b4bce2ce6ac95d446d525014 /Documentation
parent4877bf05dd838e22ce43f55e620f81e4310b05c1 (diff)
downloadfml8-614ed9e4d3f90cfe7d3a0ef926f6e2667fd03261.tar.gz
fml8-614ed9e4d3f90cfe7d3a0ef926f6e2667fd03261.tar.bz2
fml8-614ed9e4d3f90cfe7d3a0ef926f6e2667fd03261.zip
memo on datetime
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/en/I-D/draft-ietf-impp-datetime-00.txt960
-rw-r--r--Documentation/en/I-D/draft-newman-datetime-01.txt1288
2 files changed, 2248 insertions, 0 deletions
diff --git a/Documentation/en/I-D/draft-ietf-impp-datetime-00.txt b/Documentation/en/I-D/draft-ietf-impp-datetime-00.txt
new file mode 100644
index 00000000..60235891
--- /dev/null
+++ b/Documentation/en/I-D/draft-ietf-impp-datetime-00.txt
@@ -0,0 +1,960 @@
+Network Working Group C. Newman, Innosoft
+Internet Draft G. Klyne, Baltimore Technologies
+ 3 April 2001
+ Expires: September 2001
+
+
+ Date and Time on the Internet: Timestamps
+ <draft-ietf-impp-datetime-00.txt>
+
+
+Status of this memo
+
+ This document is an Internet-Draft and is in full conformance with
+ all provisions of Section 10 of RFC 2026.
+
+ Internet-Drafts are working documents of the Internet Engineering
+ Task Force (IETF), its areas, and its working groups. Note that
+ other groups may also distribute working documents as Internet-
+ Drafts.
+
+ Internet-Drafts are draft documents valid for a maximum of six months
+ and may be updated, replaced, or obsoleted by other documents at any
+ time. It is inappropriate to use Internet-Drafts as reference
+ material or to cite them other than as "work in progress".
+
+ The list of current Internet-Drafts can be accessed at
+ http://www.ietf.org/1id-abstracts.html
+
+ The list of Internet-Draft Shadow Directories can be accessed at
+ http://www.ietf.org/shadow.html.
+
+
+ To view the entire list of current Internet-Drafts, please check the
+ "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
+ Directories on ftp.is.co.za (Africa), ftp.nordu.net (Northern
+ Europe), ftp.nis.garr.it (Southern Europe), munnari.oz.au (Pacific
+ Rim), ftp.ietf.org (US East Coast), or ftp.isi.edu (US West Coast).
+
+
+Copyright Notice
+
+ Copyright (C) The Internet Society 2001. All Rights Reserved.
+
+
+Abstract
+
+ This document defines a date and time format for use in Internet
+ protocols that is a profile of the ISO 8601 [ISO8601] standard for
+ representation of dates and times using the Gregorian calendar.
+
+
+
+
+
+
+
+
+
+Newman & Klyne FORMFEED[Page 1]
+
+
+
+
+
+Internet Draft Date and Time - Timestamps April 2001
+
+
+Table of Contents
+
+ 1. Introduction
+ 2. Definitions
+ 3. Two Digit Years
+ 4. Local Time
+ 4.1. Coordinated Universal Time (UTC)
+ 4.2. Local Offsets
+ 4.3. Unknown Local Offset Convention
+ 4.4. Unqualified Local Time
+ 5. Date and Time format
+ 5.1. Ordering
+ 5.2. Human Readability
+ 5.3. Rarely Used Options
+ 5.4. Redundant Information
+ 5.5. Simplicity
+ 5.6. Internet Date/Time Format
+ 5.7. Restrictions
+ 5.8. Examples
+ 6. Acknowledgements
+ 7. References
+ 8. Security Considerations
+ 9. Authors' Addresses
+ Appendix A. ISO 8601 Collected ABNF
+ Appendix B. Day of the Week
+ Appendix C. Leap Years
+ Appendix D. Leap Seconds
+ Appendix E. Amendment history
+ Full copyright statement
+
+
+1. Introduction
+
+ Date and time formats cause a lot of confusion and interoperability
+ problems on the Internet. This document addresses many of the
+ problems encountered and make recommendations to improve consistency
+ and interoperability when representing and using date and time in
+ Internet protocols.
+
+ This document includes an Internet profile of the ISO 8601 [ISO8601]
+ standard for representation of dates and times using the Gregorian
+ calendar.
+
+
+
+
+
+
+
+
+
+Newman & Klyne FORMFEED[Page 2]
+
+
+
+
+
+Internet Draft Date and Time - Timestamps April 2001
+
+
+ There are many ways in which date and time values might appear in
+ Internet protocols: this document focuses on just one common usage,
+ viz. timestamps for Internet protocol events. This limited
+ consideration has the following consequences:
+
+ o All dates and times are assumed to be in the "current era",
+ somewhere between 0AD and 9999AD.
+
+ o All times expressed have a stated relationship (offset) to
+ Coordinated Universal Time (UTC). (This is distinct from some
+ usage in scheduling applications where a local time and location
+ may be known, but the actual relationship to UTC may be dependent
+ on the unknown or unknowable actions of politicians or
+ administrators. The UTC time corresponding to 17:00 on 23rd March
+ 2005 in New York may depend on administrative decisions about
+ daylight savings time. This specification steers well clear of
+ such considerations.)
+
+ o Date and time expressions indicate an instant in time.
+ Description of time periods, or intervals, is not covered here.
+
+
+2. Definitions
+
+
+ UTC Coordinated Universal Time as maintained by the Bureau
+ Internaational des Poids et Mesures (BIPM).
+
+ second A basic unit of measurement of time in the International
+ System of Units. It is defined as the duration of
+ 9,192,631,770 cycles of microwave light absorbed or
+ emitted by the hyperfine transition of cesium-133 atoms
+ in their ground state undisturbed by external fields.
+
+ minute A period of time of 60 seconds.
+
+ hour A period of time of 60 minutes.
+
+ day A period of time of 24 hours.
+
+ leap year In the Gregorian calendar, a year which has 366 days. A
+ leap year is a year whose number is divisible by four an
+ integral number of times, except that if it is a
+ centennial year it shall be divisible by four hundred an
+ integral number of times.
+
+
+
+
+
+
+Newman & Klyne FORMFEED[Page 3]
+
+
+
+
+
+Internet Draft Date and Time - Timestamps April 2001
+
+
+ ABNF Augmented Backus-Naur Form, a format used to represent
+ permissible strings in a protocol or language, as defined
+ in [ABNF].
+
+ Email Date/Time Format
+ The date/time format used by Internet Mail as defined by
+ RFC 822 [IMAIL] and amended by RFC 1123 [HOST-REQ].
+
+ Internet Date/Time Format
+ The date format defined in section 5 of this document.
+
+ For more information about time scales, see Appendix E of [NTP],
+ Section 3 of [ISO8601], and the appropriate ITU documents [ITU-R-TF].
+
+
+3. Two Digit Years
+
+ The following requirements are to address the problems of ambiguity
+ of 2-digit years:
+
+ o Internet Protocols MUST generate four digit years in dates.
+
+ o The use of 2-digit years is deprecated. If a 2-digit year is
+ received, it should be accepted ONLY if an incorrect
+ interpretation will not cause a protocol or processing failure
+ (e.g. if used only for logging or tracing purposes).
+
+ o It is possible that a program using two digit years will represent
+ years after 1999 as three digits. This occurs if the program
+ simply subtracts 1900 from the year and doesn't check the number
+ of digits. Programs wishing to robustly deal with dates generated
+ by such broken software may add 1900 to three digit years.
+
+ o It is possible that a program using two digit years will represent
+ years after 1999 as ":0", ":1", ... ":9", ";0", ... This occurs
+ if the program simply subtracts 1900 from the year and adds the
+ decade to the US-ASCII character zero. Programs wishing to
+ robustly deal with dates generated by such broken software should
+ detect non-numeric decades and interpret appropriately.
+
+ The problems with two digit years amply demonstrate why all dates and
+ times used in Internet protocols MUST be fully qualified.
+
+
+
+
+
+
+
+
+
+Newman & Klyne FORMFEED[Page 4]
+
+
+
+
+
+Internet Draft Date and Time - Timestamps April 2001
+
+
+4. Local Time
+
+4.1. Coordinated Universal Time (UTC)
+
+ Because the daylight rules for local timezones are so convoluted and
+ can change based on local law at unpredictable times, true
+ interoperability is best achieved by using Coordinated Universal Time
+ (UTC). This specification does not cater to local timezone rules.
+
+4.2. Local Offsets
+
+ The offset between local time and UTC is often useful information.
+ For example, in electronic mail [IMAIL] the local offset provides a
+ useful heuristic to determine the probability of a prompt response.
+ Attempts to label local offsets with alphabetic strings have resulted
+ in poor interoperability in the past [IMAIL], [HOST-REQ]. Therefore
+ numeric offsets are now REQUIRED in Internet Mail Date/Time Format.
+
+ Numeric offsets are calculated as "local time minus UTC". So the
+ equivalent time in UTC can be determined by subtracting the offset
+ from the local time. For example, 18:50:00-04:00 is the same time as
+ 22:58:00Z.
+
+4.3. Unknown Local Offset Convention
+
+ If the time in UTC is known, but the offset to local time is unknown,
+ this can be represented with an offset of "-00:00". This differs
+ semanticly from an offset of "Z" which implies that UTC is the
+ preferred reference point for the specified time. This convention
+ MAY also be used in the Email Date/Time Format.
+
+4.4. Unqualified Local Time
+
+ A number of devices currently connected to the Internet run their
+ internal clocks in local time and are unaware of UTC. While the
+ Internet does have a tradition of accepting reality when creating
+ specifications, this should not be done at the expense of
+ interoperability. Since interpretation of an unqualified local
+ timezone will fail in approximately 23/24 of the globe, the
+ interoperability problems of unqualified local time are deemed
+ unacceptable for the Internet. Systems that are configured with a
+ local time, are unaware of the corresponding UTC offset, and depend
+ on time synchronization with other Internet systems, MUST use a
+ mechanism that ensures correct synchronization with UTC. Some
+ suitable mechanisms are:
+
+ o Use Network Time Protocol [NTP] to obtain the time in UTC.
+
+
+
+
+Newman & Klyne FORMFEED[Page 5]
+
+
+
+
+
+Internet Draft Date and Time - Timestamps April 2001
+
+
+ o Use another host in the same local timezone as a gateway to the
+ Internet. This host MUST correct unqualified local times before
+ they are transmitted to other hosts.
+
+ o Prompt the user for the local timezone and daylight savings
+ settings.
+
+
+5. Date and Time format
+
+ This section discusses desirable qualities of date and time formats
+ and defines a profile of ISO 8601 for use in Internet protocols.
+
+5.1. Ordering
+
+ If date and time components are ordered from least precise to most
+ precise, then a useful property is achieved. Assuming that the
+ timezones of the dates and times are the same (e.g. all in UTC), then
+ the date and time strings may be sorted as strings (e.g. using the
+ strcmp() function in C) and a time-ordered sequence will result. The
+ presence of optional punctuation would violate this characteristic.
+
+5.2. Human Readability
+
+ Human readability has proved to be a valuable feature of Internet
+ protocols. Human readable protocols greatly reduce the costs of
+ debugging since telnet often suffices as a test client and network
+ analysers need not be modified with knowledge of the protocol. On
+ the other hand, human readability sometimes results in
+ interoperability problems. For example, the date format "10/11/1996"
+ is completely unsuitable for global interchange because it is
+ interpreted differently in different countries. In addition, the
+ date format in [IMAIL] has resulted in interoperability problems when
+ people assumed any text string was permitted and translated the three
+ letter abbreviations to other languages or substituted date formats
+ which were easier to generate (e.g. the format used by the C function
+ ctime). For this reason, a balance must be struck between human
+ readability and interoperability.
+
+ Because no date and time format is readable according to the
+ conventions of all countries, Internet clients SHOULD be prepared to
+ transform dates into a display format suitable for the locality.
+ This may include translating UTC to local time.
+
+5.3. Rarely Used Options
+
+ A format which includes rarely used options is likely to cause
+ interoperability problems. This is because rarely used options are
+
+
+
+Newman & Klyne FORMFEED[Page 6]
+
+
+
+
+
+Internet Draft Date and Time - Timestamps April 2001
+
+
+ less likely to be used in alpha or beta testing, so bugs in parsing
+ are less likely to be discovered. Rarely used options should be made
+ mandatory or omitted for the sake of interoperability whenever
+ possible.
+
+ The format defined below includes only one rarely used option:
+ fractions of a second. It is expected that this will be used only by
+ applications which require strict ordering of date/time stamps or
+ which have an unusual precision requirement.
+
+5.4. Redundant Information
+
+ If a date/time format includes redundant information, that introduces
+ the possibility that the redunant information will not correlate.
+ For example, including the day of the week in a date/time format
+ introduces the possibility that the day of week is incorrect but the
+ date is correct, or vice versa. Since it is not difficult to compute
+ the day of week from a date (see Appendix B), the day of week should
+ not be included in a date/time format.
+
+5.5. Simplicity
+
+ The complete set of date and time formats specified in ISO 8601
+ [ISO8601] is quite complex in an attempt to provide multiple
+ representations and partial representations. Appendix A contains an
+ attempt to translate the complete syntax of ISO 8601 into ABNF.
+ Internet protocols have somewhat different requirements and
+ simplicity has proved to be an important characteristic. In
+ addition, Internet protocols usually need complete specification of
+ data in order to achieve true interoperability. Therefore, the
+ complete grammar for ISO 8601 is deemed too complex for most Internet
+ protocols.
+
+ The following section defines a profile of ISO 8601 for use on the
+ Internet. It is a conformant subset of the ISO 8601 extended format.
+ Simplicity is achieved by making most fields and punctuation
+ mandatory.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Newman & Klyne FORMFEED[Page 7]
+
+
+
+
+
+Internet Draft Date and Time - Timestamps April 2001
+
+
+5.6. Internet Date/Time Format
+
+ The following profile of ISO 8601 [ISO8601] dates SHOULD be used in
+ new protocols on the Internet. This is specified using the syntax
+ description notation defined in [ABNF].
+
+ date-fullyear = 4DIGIT
+ date-month = 2DIGIT ; 01-12
+ date-mday = 2DIGIT ; 01-28, 01-29, 01-30, 01-31 based on month/year
+ time-hour = 2DIGIT ; 00-23
+ time-minute = 2DIGIT ; 00-59
+ time-second = 2DIGIT ; 00-59, 00-60 based on leap second rules
+ time-secfrac = "." 1*DIGIT
+ time-numoffset = ("+" / "-") time-hour ":" time-minute
+ time-offset = "Z" / time-numoffset
+
+ partial-time = time-hour ":" time-minute ":" time-second
+ [time-secfrac]
+ full-date = date-fullyear "-" date-month "-" date-mday
+ full-time = partial-time time-offset
+
+ date-time = full-date "T" full-time
+
+
+ NOTE: Per [ABNF] and ISO8601, the "T" and "Z" characters in
+ this syntax may alternatively be lower case "t" or "z"
+ respectively.
+
+ NOTE: ISO 8601 defines date and time separated by "T".
+ Applications using this syntax may choose, for the sake of
+ readability, to specify a full-date and full-time separated by
+ (say) a space character.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Newman & Klyne FORMFEED[Page 8]
+
+
+
+
+
+Internet Draft Date and Time - Timestamps April 2001
+
+
+5.7. Restrictions
+
+ The grammar element date-mday represents the day number within the
+ current month. The maximum value varies based on the month and year
+ as follows:
+
+ Month Number Month/Year Maximum value of date-mday
+ ------------ ---------- --------------------------
+ 01 January 31
+ 02 February, normal 28
+ 02 February, leap year 29
+ 03 March 31
+ 04 April 30
+ 05 May 31
+ 06 June 30
+ 07 July 31
+ 08 August 31
+ 09 September 30
+ 10 October 31
+ 11 November 30
+ 12 December 31
+
+ Appendix C contains sample C code to determine if a year is a leap
+ year.
+
+ The grammar element time-second may have the value "60" at the end of
+ June (XXXX-06-30T23:59:60Z) or December (XXXX-12-31T23:59:60Z) if
+ there is a leap second at that time (see Appendix D for a table of
+ leap seconds). At all other times the maximum value of time-second
+ is "59". Further, in timezones other than "Z", the leap second point
+ is shifted by the zone offset (so it happens at the same instant
+ around the globe).
+
+ Although ISO 8601 permits the hour to be "24", this profile of ISO
+ 8601 only allows values between "00" and "23" for the hour in order
+ to reduce confusion.
+
+
+5.8. Examples
+
+ Here are three examples of Internet date/time format.
+
+ 1985-04-12T23:20:50.52Z
+
+ This represents 20 minutes and 50.52 seconds after the 23rd hour of
+ April 12th, 1985 in UTC.
+
+
+
+
+
+Newman & Klyne FORMFEED[Page 9]
+
+
+
+
+
+Internet Draft Date and Time - Timestamps April 2001
+
+
+ 1996-12-19T16:39:57-08:00
+
+ This represents 39 minutes and 57 seconds after the 16th hour of
+ December 19th, 1996 with an offset of -08:00 from UTC (Pacific
+ Standard Time). Note that this is equivalent to 1996-12-20T00:39:57Z
+ in UTC.
+
+ 1990-12-31T23:59:60Z
+
+ This represents the leap second inserted at the end of 1990.
+
+ 1990-12-31T15:59:60-08:00
+
+ This represents the same leap second in Pacific Standard Time, 8
+ hours behind UTC.
+
+
+6. Acknowledgements
+
+ The following people provided helpful advice for an earlier
+ incarnation of this document: Ned Freed, Neal McBurnett, David
+ Keegel, Markus Kuhn, Paul Eggert and Robert Elz. Thanks are also due
+ to participants of the IETF Calendaring/Scheduling working group
+ mailing list, and participants of the timezone mailing list.
+
+
+7. References
+
+ [Zeller] Chr. Zeller, "Kalender-Formeln", Acta Mathematica, Vol.
+ 9, Nov 1886.
+
+ [IMAIL] Crocker, D., "Standard for the Format of Arpa Internet
+ Text Messages", RFC 822, August 1982.
+
+ [ABNF] Crocker, D. and P. Overell, "Augmented BNF for Syntax
+ Specifications: ABNF", RFC 2234, November 1997.
+
+ [ISO8601] "Data elements and interchange formats -- Information
+ interchange -- Representation of dates and times", ISO
+ 8601:1988(E), International Organization for
+ Standardization, June, 1988.
+
+ [HOST-REQ] Braden, R., "Requirements for Internet Hosts --
+ Application and Support", RFC 1123, Internet Engineering
+ Task Force, October 1989.
+
+
+
+
+
+Newman & Klyne FORMFEED[Page 10]
+
+
+
+
+
+Internet Draft Date and Time - Timestamps April 2001
+
+
+ [NTP] Mills, D., "Network Time Protocol (Version 3)
+ Specification, Implementation and Analysis", RFC 1305,
+ University of Delaware, March 1992.
+
+ [ITU-R-TF] International Telecommunication Union Recommendations for
+ Time Signals and Frequency Standards Emissions.
+ <http://www.itu.ch/publications/itu-r/iturtf.htm>
+
+
+
+8. Security Considerations
+
+ Since the local time zone of a site may be useful for determining a
+ time when systems are less likely to be monitored and might be more
+ susceptible to a security probe, some sites may wish to emit times in
+ UTC only. Others might consider this to be loss of useful
+ functionality at the hands of paranoia.
+
+
+9. Authors' Addresses
+
+ Chris Newman
+ Innosoft International, Inc.
+ 1050 Lakes Drive
+ West Covina, CA 91790 USA
+
+ Email: chris.newman@innosoft.com
+
+ Graham Klyne
+ Baltimore Technologies - Content Security Group
+ 1310 Waterside
+ Arlington Business Park
+ Theale
+ Reading, RG7 4SA
+ United Kingdom.
+ Telephone: +44 118 903 8000
+ Facsimile: +44 118 903 9000
+ E-mail: GK@ACM.ORG
+
+
+Appendix A. ISO 8601 Collected ABNF
+
+ ISO 8601 does not specify a formal grammar for the date and time
+ formats it defines. The following is an attempt to create a formal
+ grammar from ISO 8601. This is informational only and may contain
+ errors. ISO 8601 remains the authoratative reference.
+
+ Note that due to ambiguities in ISO 8601, some interpretations had to
+
+
+
+Newman & Klyne FORMFEED[Page 11]
+
+
+
+
+
+Internet Draft Date and Time - Timestamps April 2001
+
+
+ be made. First, ISO 8601 is not clear if mixtures of basic and
+ extended format are permissible. This grammar permits mixtures. ISO
+ 8601 is not clear on whether an hour of 24 is permissible only if
+ minutes and seconds are 0. This assumes that an hour of 24 is
+ permissible in any context. Restrictions on date-mday in section 5.7
+ apply. ISO 8601 states that the "T" may be omitted under some
+ circumstances. This grammar requires the "T" to avoid ambiguity.
+
+ ISO 8601 also requires (in section 5.3.1.3) that a decimal fraction
+ be proceeded by a "0" if less than unity. Annex B.2 of ISO 8601
+ gives examples where the decimal fractions are not preceeded by a
+ "0". This grammar assumes section 5.3.1.3 is correct and that Annex
+ B.2 is in error.
+
+ date-century = 2DIGIT ; 00-99
+ date-decade = DIGIT ; 0-9
+ date-subdecade = DIGIT ; 0-9
+ date-year = date-decade date-subdecade
+ date-fullyear = date-century date-year
+ date-month = 2DIGIT ; 01-12
+ date-wday = DIGIT ; 1-7 ; 1 is Monday, 7 is Sunday
+ date-mday = 2DIGIT ; 01-28, 01-29, 01-30, 01-31 based on month/year
+ date-yday = 3DIGIT ; 001-365, 001-366 based on year
+ date-week = 2DIGIT ; 01-52, 01-53 based on year
+
+ datepart-fullyear = [date-century] date-year ["-"]
+ datepart-ptyear = "-" [date-subdecade ["-"]]
+ datepart-wkyear = datepart-ptyear / datepart-fullyear
+
+ dateopt-century = "-" / date-century
+ dateopt-fullyear = "-" / datepart-fullyear
+ dateopt-year = "-" / (date-year ["-"])
+ dateopt-month = "-" / (date-month ["-"])
+ dateopt-week = "-" / (date-week ["-"])
+
+ datespec-full = datepart-fullyear date-month ["-"] date-mday
+ datespec-year = date-century / dateopt-century date-year
+ datespec-month = "-" dateopt-year date-month [["-"] date-mday]
+ datespec-mday = "--" dateopt-month date-mday
+ datespec-week = datepart-wkyear "W"
+ (date-week / dateopt-week date-wday)
+ datespec-wday = "---" date-wday
+ datespec-yday = dateopt-fullyear date-yday
+
+ date = datespec-full / datespec-year / datespec-month /
+ datespec-mday / datespec-week / datespec-wday / datespec-yday
+
+
+
+
+
+Newman & Klyne FORMFEED[Page 12]
+
+
+
+
+
+Internet Draft Date and Time - Timestamps April 2001
+
+
+ Time:
+
+ time-hour = 2DIGIT ; 00-24
+ time-minute = 2DIGIT ; 00-59
+ time-second = 2DIGIT ; 00-59, 00-60 based on leap-second rules
+ time-fraction = ("," / ".") 1*DIGIT
+ time-numoffset = ("+" / "-") time-hour [[":"] time-minute]
+ time-zone = "Z" / time-numoffset
+
+ timeopt-hour = "-" / (time-hour [":"])
+ timeopt-minute = "-" / (time-minute [":"])
+
+ timespec-hour = time-hour [[":"] time-minute [[":"] time-second]]
+ timespec-minute = timeopt-hour time-minute [[":"] time-second]
+ timespec-second = "-" timeopt-minute time-second
+ timespec-base = timespec-hour / timespec-minute / timespec-second
+
+ time = timespec-base [time-fraction] [time-zone]
+
+ iso-date-time = date "T" time
+
+ Durations:
+
+ dur-second = 1*DIGIT "S"
+ dur-minute = 1*DIGIT "M" [dur-second]
+ dur-hour = 1*DIGIT "H" [dur-minute]
+ dur-time = "T" (dur-hour / dur-minute / dur-second)
+ dur-day = 1*DIGIT "D"
+ dur-week = 1*DIGIT "W"
+ dur-month = 1*DIGIT "M" [dur-day]
+ dur-year = 1*DIGIT "Y" [dur-month]
+ dur-date = (dur-day / dur-month / dur-year) [dur-time]
+
+ duration = "P" (dur-date / dur-time / dur-week)
+
+ Periods:
+
+ period-explicit = date-time "/" date-time
+ period-start = date-time "/" duration
+ period-end = duration "/" date-time
+
+ period = period-explicit / period-start / period-end
+
+
+
+
+
+
+
+
+
+Newman & Klyne FORMFEED[Page 13]
+
+
+
+
+
+Internet Draft Date and Time - Timestamps April 2001
+
+
+Appendix B. Day of the Week
+
+ The following is a sample C subroutine loosly based on Zeller's
+ Congruence [Zeller] which may be used to obtain the day of the week:
+
+
+ char *day_of_week(int day, int month, int year)
+ {
+ char *dayofweek[] = {
+ "Sunday", "Monday", "Tuesday", "Wednesday",
+ "Thursday", "Friday", "Saturday"
+ };
+
+ /* adjust months so February is the last one */
+ month -= 2;
+ if (month < 1) {
+ month += 12;
+ --year;
+ }
+ /* split by century */
+ cent = year / 100;
+ year %= 100;
+ return (dayofweek[((26 * month - 2) / 10 + day + year
+ + year / 4 + cent / 4 - 2 * cent) % 7]);
+ }
+
+
+
+Appendix C. Leap Years
+
+ Here is a sample C subroutine to calculate if a year is a leap year:
+
+
+ /* This returns non-zero if year is a leap year. Must use 4 digit year.
+ */
+ int leap_year(int year)
+ {
+ return (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
+ }
+
+
+
+Appendix D. Leap Seconds
+
+ This table is an excerpt from the table maintained by the United
+ States Naval Observatory. The source data is located at:
+
+ <ftp://maia.usno.navy.mil/ser7/tai-utc.dat>
+
+
+
+Newman & Klyne FORMFEED[Page 14]
+
+
+
+
+
+Internet Draft Date and Time - Timestamps April 2001
+
+
+ This table shows the date of the leap second, and the difference
+ between the time standard TAI (which isn't adjusted by leap seconds)
+ and UTC after that leap second.
+
+
+ UTC Date TAI - UTC After Leap Second
+ -------- ---------------------------
+ 1972-06-30 11
+ 1972-12-31 12
+ 1973-12-31 13
+ 1974-12-31 14
+ 1975-12-31 15
+ 1976-12-31 16
+ 1977-12-31 17
+ 1978-12-31 18
+ 1979-12-31 19
+ 1981-06-30 20
+ 1982-06-30 21
+ 1983-06-30 22
+ 1985-06-30 23
+ 1987-12-31 24
+ 1989-12-31 25
+ 1990-12-31 26
+ 1992-06-30 27
+ 1993-06-30 28
+ 1994-06-30 29
+ 1995-12-31 30
+ 1997-06-30 31
+
+
+
+Appendix E. Amendment history
+
+
+00a 30-Mar-2001 This document version created from Chris Newman's
+ original 'draft-ietf-impp-datetime-00.txt'. Material
+ relating to future times (schedule events) and timezone
+ names has been removed. Added introductory text setting
+ the scope for this document. Various small editorial
+ changes.
+
+00b 03-Apr-2001 Added reference [ABNF], and updated citations. Added
+ comment about possible use of space-separated date/time
+ fields. Added comment about possible use of lower case
+ "t" and "z" in syntax. Corrected leap-second examples
+ and noted that leap second point is offset by time zone.
+
+
+
+
+
+Newman & Klyne FORMFEED[Page 15]
+
+
+
+
+
+Internet Draft Date and Time - Timestamps April 2001
+
+
+Full copyright statement
+
+ Copyright (C) The Internet Society 2001. All Rights Reserved.
+
+ This document and translations of it may be copied and furnished to
+ others, and derivative works that comment on or otherwise explain it
+ or assist in its implementation may be prepared, copied, published
+ and distributed, in whole or in part, without restriction of any
+ kind, provided that the above copyright notice and this paragraph are
+ included on all such copies and derivative works. However, this
+ document itself may not be modified in any way, such as by removing
+ the copyright notice or references to the Internet Society or other
+ Internet organizations, except as needed for the purpose of
+ developing Internet standards in which case the procedures for
+ copyrights defined in the Internet Standards process must be
+ followed, or as required to translate it into languages other than
+ English.
+
+ The limited permissions granted above are perpetual and will not be
+ revoked by the Internet Society or its successors or assigns.
+
+ This document and the information contained herein is provided on an
+ "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+ TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+ HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Newman & Klyne FORMFEED[Page 16]
+
+
diff --git a/Documentation/en/I-D/draft-newman-datetime-01.txt b/Documentation/en/I-D/draft-newman-datetime-01.txt
new file mode 100644
index 00000000..48ffe3cb
--- /dev/null
+++ b/Documentation/en/I-D/draft-newman-datetime-01.txt
@@ -0,0 +1,1288 @@
+
+
+
+Network Working Group C. Newman
+Internet Draft: Date and Time on the Internet Innosoft
+Document: draft-newman-datetime-01.txt January 1997
+
+
+ Date and Time on the Internet
+
+
+Status of this memo
+
+ This document is an Internet Draft. Internet Drafts are working
+ documents of the Internet Engineering Task Force (IETF), its Areas,
+ and its Working Groups. Note that other groups may also distribute
+ working documents as Internet Drafts.
+
+ Internet Drafts are draft documents valid for a maximum of six
+ months. Internet Drafts may be updated, replaced, or obsoleted by
+ other documents at any time. It is not appropriate to use Internet
+ Drafts as reference material or to cite them other than as a
+ ``working draft'' or ``work in progress``.
+
+ To learn the current status of any Internet-Draft, please check the
+ 1id-abstracts.txt listing contained in the Internet-Drafts Shadow
+ Directories on ds.internic.net, nic.nordu.net, ftp.isi.edu, or
+ munnari.oz.au.
+
+ A revised version of this draft document will be submitted to the
+ IESG as a Proposed Standard for the Internet Community. Discussion
+ and suggestions for improvement are requested. This document will
+ expire six months after publication. Distribution of this draft is
+ unlimited.
+
+
+
+1. Introduction
+
+ Date and time formats cause a lot of confusion and interoperability
+ problems on the Internet. This document will address many of the
+ problems encountered and make recommendations to improve
+ consistancy and interoperability when representing and using date
+ and time in Internet protocols.
+
+ This document includes an Internet profile of the ISO 8601
+ [ISO8601] standard for representation of dates and times using the
+ Gregorian calendar.
+
+ Changes from draft -00:
+ * added some more definitions and references (fixed NTP reference)
+
+
+
+Newman [Page 1]
+
+Internet Draft Date and Time January 1997
+
+
+ * language clarifications
+ * include rules for day of month and leap seconds
+ * disallow hour of 24
+ * add registry of named timezones and local time format
+ * use . instead of , for fractions of second
+ * removed references to AM/PM
+ * simplified appendix B program
+ * added appendix C program to calculate leap year
+
+ Controversial in last draft, but unchanged:
+ * use of "T" as date/time separator. Proposal is to use " " instead,
+ but my reading of ISO 8601 does not permit that.
+ * suggestion to make minutes offset from UTC optional.
+ * interpretation of 2 digit years
+
+ Open issues:
+ * See controversial issues above. More comment is welcome.
+ * Are more definitions needed?
+ * A number of the timezones in the initial registry list are
+ duplicates for future times. I already removed the Indiana county
+ ones since they all duplicate Indianapolis for future times.
+ * Need reference to good article demonstrating year 2000 problems.
+ * Need commentary on registry and to set up address for registry.
+ * Will add appendix D, E with sample POSIX generation/parsing code
+ for section 5.6. Markus Kuhn is working on code.
+
+
+2. Definitions
+
+ UTC Coordinated Universal Time as maintained by the Bureau
+ Internaational de l'Heure (International Time Bureau).
+
+ second A basic unit of measurement of time in the
+ International System of Units.
+
+ minute A period of time of 60 seconds.
+
+ hour A period of time of 60 minutes.
+
+ day A period of time of 24 hours.
+
+ leap year In the Gregorian calendar, a year which has 366 days.
+ A leap year is a year whose number is divisible by four
+ an integral number of times, except that if it is a
+ centennial year it shall be divisible by four hundred
+ an integral number of times.
+
+ ABNF Augmented Backus-Naur Form, a format used to represent
+
+
+
+Newman [Page 2]
+
+Internet Draft Date and Time January 1997
+
+
+ permissible strings in a protocol or language, as
+ defined in [IMAIL].
+
+ Email Date/Time Format
+ The date/time format used by Internet Mail as defined
+ by RFC 822 [IMAIL] and amended by RFC 1123 [HOST-REQ].
+
+ Internet Date/Time Format
+ The date format defined in section 5 of this document.
+
+ For more information about time scales, see Appendix E of [NTP],
+ Section 3 of [ISO8601], and the appropriate ITU documents [ITU-R-
+ TF].
+
+
+3. Two Digit Years
+
+ Two digit years are expected to cause great expense to many as the
+ year 2000 approaches. Many existing computer programs simply add
+ or subtract 1900 from a two digit year. Such programs will clearly
+ stop functioning on the year 2000 and will have to be upgraded,
+ possibly at great expense [XXX - ref to article on IRS year 2000
+ problems would be cool]. The following requirements are made of
+ Internet protocols to address this problem:
+
+ o Internet Protocols MUST generate four digit years in dates.
+
+ o If a two digit year is received, the values 00-49 MUST be
+ interpreted as referring to the 21st century (add 2000) and the
+ values 50-99 MUST be interpreted as referring to the 20th
+ century (add 1900). While different interpretations may result
+ in a few more years of 2-digit usability for some applications,
+ it is believed that a single interpretation for two digit years
+ in all Internet protocols will result in better
+ interoperability. In addition, it is reasonable to expect all
+ Internet Protocols using 2 digit dates to be upgraded by the
+ year 2050.
+
+ o It is possible that a program using two digit years will
+ represent years after 1999 as three digits. This occurs if the
+ program simply subtracts 1900 from the year and doesn't check
+ the number of digits. Programs wishing to robustly deal with
+ dates generated by such broken software may add 1900 to three
+ digit years.
+
+ o It is possible that a program using two digit years will
+ represent years after 1999 as ":0", ":1", ... ":9", ";0", ...
+ This occurs if the program simply subtracts 1900 from the year
+
+
+
+Newman [Page 3]
+
+Internet Draft Date and Time January 1997
+
+
+ and adds the decade to the US-ASCII character zero. Programs
+ wishing to robustly deal with dates generated by such broken
+ software should detect non-numeric decades and interpret
+ appropriately.
+
+ The problems with two digit years amply demonstrate why all dates
+ and times used in Internet protocols MUST be fully qualified.
+
+
+4. Local Time
+
+4.1. Coordinated Universal Time (UTC)
+
+ Because the daylight rules for local timezones are so convoluted
+ and can change based on local law at unpredictable times, true
+ interoperability is best achieved by using Coordinated Universal
+ Time (UTC).
+
+
+4.2. Local Offsets
+
+ The offset between local time and UTC is often useful information.
+ For example, in electronic mail [IMAIL] the local offset provides a
+ useful heuristic to determine the probability of a prompt response.
+ Attempts to label local offsets with alphabetic strings have
+ resulted in poor interoperability in the past [IMAIL], [HOST-REQ].
+ Therefore numeric offsets are now REQUIRED in Internet Mail
+ Date/Time Format.
+
+ Numeric offsets are calculated as "local time minus UTC". So the
+ equivalent time in UTC can be determined by subtracting the offset
+ from the local time. For example, 18:50:00-04:00 is the same time
+ as 22:58:00Z.
+
+
+4.3. Unknown Local Offset Convention
+
+ If the time in UTC is known, but the offset to local time is
+ unknown, this can be represented with an offset of "-00:00". This
+ differs semanticly from an offset of "Z" which implies that UTC is
+ the preferred reference point for the specified time. This
+ convention MAY also be used in the Email Date/Time Format.
+
+
+4.4. Unqualified Local Time
+
+ A number of devices currently connected to the Internet run their
+ internal clocks in local time and are unaware of UTC. While the
+
+
+
+Newman [Page 4]
+
+Internet Draft Date and Time January 1997
+
+
+ Internet does have a tradition of accepting reality when creating
+ specifications, this should not be done at the expense of
+ interoperability. Since interpretation of an unqualified local
+ timezone will fail in approximately 23/24 of the globe, the
+ interoperability problems of unqualified local time are deemed
+ unacceptable for the Internet. Devices which are unaware of the
+ time in UTC MUST use one of the following techniques when
+ communicating on the Internet:
+
+ o Use Network Time Protocol [NTP] to obtain the time in UTC.
+
+ o Use another host in the same local timezone as a gateway to the
+ Internet. This host MUST correct unqualified local times before
+ they are transmitted to other hosts.
+
+ o Prompt the user for the local timezone and daylight savings
+ settings.
+
+5. Date and Time formats
+
+ This section discusses desirable qualities of date and time formats
+ and defines a profile of ISO 8601 for use in new Internet
+ protocols. Email Date/Time Format lacks many of these
+ characteristics and its use in new protocols is discouraged.
+
+
+5.1. Ordering
+
+ If date and time components are ordered from least precise to most
+ precise, then a useful property is achieved. Assuming that the
+ timezones of the dates and times are the same (e.g. all in UTC),
+ then the date and time strings may be sorted as strings (e.g. using
+ the strcmp() function in C) and a time-ordered sequence will
+ result. The presence of optional punctuation would violate this
+ characteristic.
+
+
+5.2. Human Readability
+
+ Human readability has proved to be a valuable feature of Internet
+ protocols. Human readable protocols greatly reduce the costs of
+ debugging since telnet often suffices as a test client and network
+ analysers need not be modified with knowledge of the protocol. On
+ the other hand, human readability sometimes results in
+ interoperability problems. For example, the date format
+ "10/11/1996" is completely unsuitable for global interchange
+ because it is interpreted differently in different countries. In
+ addition, the date format in [IMAIL] has resulted in
+
+
+
+Newman [Page 5]
+
+Internet Draft Date and Time January 1997
+
+
+ interoperability problems when people assumed any text string was
+ permitted and translated the three letter abbreviations to other
+ languages or substituted date formats which were easier to generate
+ (e.g. the format used by the C function ctime). For this reason, a
+ balance must be struck between human readability and
+ interoperability.
+
+ Because no date and time format is readable according to the
+ conventions of all countries, Internet clients SHOULD be prepared
+ to transform dates into a display format suitable for the locality.
+ This may include translating UTC to local time.
+
+
+5.3. Rarely Used Options
+
+ A format which includes rarely used options is likely to cause
+ interoperability problems. This is because rarely used options are
+ less likely to be used in alpha or beta testing, so bugs in parsing
+ are less likely to be discovered. Rarely used options should be
+ made mandatory or omitted for the sake of interoperability whenever
+ possible.
+
+ The format defined below includes only one rarely used option:
+ fractions of a second. It is expected that this will be used only
+ by applications which require strict ordering of date/time stamps
+ or which have an unusual precision requirement.
+
+
+5.4. Redundant Information
+
+ If a date/time format includes redundant information, that
+ introduces the possibility that the redunant information will not
+ correlate. For example, including the day of the week in a
+ date/time format introduces the possibility that the day of week is
+ incorrect but the date is correct, or vice versa. Since it is not
+ difficult to compute the day of week from a date (see Appendix B),
+ the day of week should not be included in a date/time format.
+
+
+5.5. Simplicity
+
+ The complete set of date and time formats specified in ISO 8601
+ [ISO8601] is quite complex in an attempt to provide multiple
+ representations and partial representations. Appendix A contains
+ an attempt to translate the complete syntax of ISO 8601 into ABNF
+ as defined in [IMAIL]. Internet protocols have somewhat different
+ requirements and simplicity has proved to be an important
+ characteristic. In addition, Internet protocols usually need
+
+
+
+Newman [Page 6]
+
+Internet Draft Date and Time January 1997
+
+
+ complete specification of data in order to achieve true
+ interoperability. Therefore, the complete grammar for ISO 8601 is
+ deemed too complex for most Internet protocols.
+
+ The following section defines a profile of ISO 8601 for use on the
+ Internet. It is a conformant subset of the ISO 8601 extended
+ format. Simplicity is achieved by making most fields and
+ punctuation mandatory.
+
+
+5.6. Internet Date/Time Format
+
+ The following profile of ISO 8601 [ISO8601] dates SHOULD be used in
+ new protocols on the Internet. This is specified using ABNF as
+ defined in [IMAIL].
+
+ date-fullyear = 4DIGIT
+ date-month = 2DIGIT ; 01-12
+ date-mday = 2DIGIT ; 01-28, 01-29, 01-30, 01-31 based on month/year
+ time-hour = 2DIGIT ; 00-23
+ time-minute = 2DIGIT ; 00-59
+ time-second = 2DIGIT ; 00-59, 00-60 based on leap second rules
+ time-secfrac = "." 1*DIGIT
+ time-numoffset = ("+" / "-") time-hour ":" time-minute
+ time-offset = "Z" / time-numoffset
+
+ partial-time = time-hour ":" time-minute ":" time-second
+ [time-secfrac]
+ full-date = date-fullyear "-" date-month "-" date-mday
+ full-time = partial-time time-offset
+
+ date-time = full-date "T" full-time
+
+
+5.7. Restrictions
+
+ The grammar element date-mday represents the day number within the
+ current month. The maximum value varies based on the month and
+ year as follows:
+
+
+
+
+
+
+
+
+
+
+
+
+Newman [Page 7]
+
+Internet Draft Date and Time January 1997
+
+
+ Month Number Month/Year Maximum value of date-mday
+ ------------ ---------- --------------------------
+ 01 January 31
+ 02 February, normal 28
+ 02 February, leap year 29
+ 03 March 31
+ 04 April 30
+ 05 May 31
+ 06 June 30
+ 07 July 31
+ 08 August 31
+ 09 September 30
+ 10 October 31
+ 11 November 30
+ 12 December 31
+
+ Appendix C contains sample C code to determine if a year is a leap
+ year.
+
+ The grammar element time-second may have the value "60" at the end
+ of June (XXXX-06-30T23:59:60) or December (XXXX-12-31T23:59:60).
+ At all other times the maximum value of time-second is "59".
+
+ Although ISO 8601 permits the hour to be "24", this profile of ISO
+ 8601 only allows values between "00" and "23" for the hour in order
+ to reduce confusion.
+
+
+5.8. Examples
+
+ Here are three examples of Internet date/time format.
+
+ 1985-04-12T23:20:50.52Z
+
+ This represents 20 minutes and 50.52 seconds after the 23rd hour of
+ April 12th, 1985 in UTC.
+
+ 1996-12-19T16:39:57-08:00
+
+ This represents 39 minutes and 57 seconds after the 16th hour of
+ December 19th, 1996 with an offset of -08:00 from UTC (Pacific
+ Standard Time). Note that this is equivalent to 1996-12-
+ 20T00:39:57Z in UTC.
+
+ 1990-12-31T23:59:60Z
+
+ This represents the leap second insertted at the end of 1990.
+
+
+
+
+Newman [Page 8]
+
+Internet Draft Date and Time January 1997
+
+
+6. Future Events in Local Time
+
+ Some applications (e.g. calendaring) require the representation of
+ repeating or future dates in local time. Because the conversion
+ rules between UTC and local time may change by season and political
+ whim, it is necessary to label the local time zone with a standard
+ label so that if new conversion rules are issued the interpretation
+ of the time relative to UTC can be corrected. For this reason, an
+ IANA registry of timezone names which may be used to represent
+ future dates is necessary.
+
+
+6.1. Problems Too Hard to Solve
+
+ Since local timezone rules are set by local governments, the only
+ authoratative reference for such rules is those governments, most
+ of which do not currently provide their rules on line in a computer
+ parsible format. In addition, local timezones were historically
+ set by cities and towns, so attempting to exhaustively enumerate
+ all historical timezones for use in representing past dates is not
+ practical. Attempting to predict where new timezones will be
+ created as a subset of the area covered by an old timezone is also
+ a hopeless prospect.
+
+ Therefore the only formal part of the registry will be names for a
+ minimal set of modern timezones. As a convenience, the registry
+ will also include the base UTC offset and daylight savings rules
+ (if determinable) at the time of registration. Because the UTC
+ offset and rules may changed by other bodies, they will not be
+ considered an authoratative part of the registry.
+
+
+6.2. Prior Art
+
+ An informal collection of timezone information is currently being
+ maintained by volunteer Internet participants. The current
+ location of this information is:
+
+ <ftp://elsie.nci.nih.gov/pub/>
+
+ This is valuable work, and is used in some operating systems. The
+ initial set of timezone names for the IANA registry is a subset of
+ the names collected by this effort.
+
+
+6.3. Legal Characters in Timezone Names
+
+ Only the US-ASCII characters A-Z, a-z, 0-9, "-", "_" and "/" are
+
+
+
+Newman [Page 9]
+
+Internet Draft Date and Time January 1997
+
+
+ legal in timezone names. The basic format is the name of a
+ continent or ocean followed by a "/" followed by the name of a city
+ or political entity. A political entity may be followed by a "/"
+ and a subentity if necessary. Timezone names SHOULD use the
+ standard case in the registry, but MUST be interpreted in a case
+ insensitive manner. New timezone names SHOULD use "-" rather than
+ "_", as the latter is difficult to see in some output contexts.
+
+
+6.4. Template for IANA Registration of Timezone Names
+
+ To: timezone@XXX
+ Subject: Timezone Name Registration
+
+ Timezone Name:
+
+ ISO 3166 2-character country code:
+
+ Description:
+
+
+6.5. Proceedure for IANA Registration of Timezone Names
+
+ The IESG is responsible for appointing a reviewer of Timezone
+ Names. The job of this reviewer is to verify that the new timezone
+ name has unique UTC rules, is likely to be used, fits the rules in
+ section 6.3 and does not conflict unnecessarily with prior art
+ (especially that mentioned in section 6.2). Within two weeks of
+ posting, the reviewer must take one of the following actions:
+
+ (1) Pass the registration proposal to IANA.
+
+ (2) Reject the registration proposal.
+
+ (3) Recommend alterations to the registration proposal likely to make
+ it acceptable.
+
+ In order to assist the reviewer, the address timezone@XXX will be a
+ public mailing list where registration proposals may be discussed.
+ Subscription and unsubscription requests may be sent to timezone-
+ request@XXX.
+
+
+6.6. Initial List of IANA Timezone Names
+
+ The following list will serve as the initial list of IANA Timezone
+ Names. This list was generated from the archive mentioned in
+ section 6.2. Some of these timezone names (especially within the
+
+
+
+Newman [Page 10]
+
+Internet Draft Date and Time January 1997
+
+
+ same country) are redundant for future dates, but compatibility
+ with the timezone names in the databases discussed section 6.2. is
+ useful.
+
+ Timezone Name Country
+ ------------- -------
+ Europe/Andorra AD
+ Asia/Dubai AE
+ Asia/Kabul AF
+ America/Antigua AG
+ America/Anguilla AI
+ Europe/Tirane AL
+ Asia/Yerevan AM
+ America/Curacao AN
+ Africa/Luanda AO
+ Antarctica/Casey AQ
+ Antarctica/DumontDUrville AQ
+ Antarctica/Mawson AQ
+ Antarctica/McMurdo AQ
+ Antarctica/Palmer AQ
+ Antarctica/South_Pole AQ
+ America/Buenos_Aires AR
+ America/Catamarca AR
+ America/Cordoba AR
+ America/Jujuy AR
+ America/Mendoza AR
+ America/Rosario AR
+ Pacific/Pago_Pago AS
+ Europe/Vienna AT
+ Australia/Adelaide AU
+ Australia/Brisbane AU
+ Australia/Broken_Hill AU
+ Australia/Darwin AU
+ Australia/Hobart AU
+ Australia/Lindeman AU
+ Australia/Lord_Howe AU
+ Australia/Melbourne AU
+ Australia/Perth AU
+ Australia/Sydney AU
+ America/Aruba AW
+ Asia/Baku AZ
+ Europe/Sarajevo BA
+ America/Barbados BB
+ Asia/Dacca BD
+ Europe/Brussels BE
+ Africa/Ouagadougou BF
+ Europe/Sofia BG
+ Asia/Bahrain BH
+
+
+
+Newman [Page 11]
+
+Internet Draft Date and Time January 1997
+
+
+ Africa/Bujumbura BI
+ Africa/Porto-Novo BJ
+ Atlantic/Bermuda BM
+ Asia/Brunei BN
+ America/La_Paz BO
+ America/Cuiaba BR
+ America/Fortaleza BR
+ America/Maceio BR
+ America/Manaus BR
+ America/Noronha BR
+ America/Porto_Acre BR
+ America/Sao_Paulo BR
+ America/Nassau BS
+ Asia/Thimbu BT
+ Africa/Gaborone BW
+ Europe/Minsk BY
+ America/Belize BZ
+ America/Dawson CA
+ America/Dawson_Creek CA
+ America/Edmonton CA
+ America/Glace_Bay CA
+ America/Goose_Bay CA
+ America/Halifax CA
+ America/Inuvik CA
+ America/Iqaluit CA
+ America/Montreal CA
+ America/Nipigon CA
+ America/Pangnirtung CA
+ America/Rainy_River CA
+ America/Rankin_Inlet CA
+ America/Regina CA
+ America/St_Johns CA
+ America/Swift_Current CA
+ America/Thunder_Bay CA
+ America/Vancouver CA
+ America/Whitehorse CA
+ America/Winnipeg CA
+ America/Yellowknife CA
+ Indian/Cocos CC
+ Africa/Bangui CF
+ Africa/Brazzaville CG
+ Europe/Zurich CH
+ Africa/Abidjan CI
+ Pacific/Rarotonga CK
+ America/Santiago CL
+ Pacific/Easter CL
+ Africa/Douala CM
+ Asia/Chungking CN
+
+
+
+Newman [Page 12]
+
+Internet Draft Date and Time January 1997
+
+
+ Asia/Harbin CN
+ Asia/Kashgar CN
+ Asia/Shanghai CN
+ Asia/Urumqi CN
+ America/Bogota CO
+ America/Costa_Rica CR
+ America/Havana CU
+ Atlantic/Cape_Verde CV
+ Indian/Christmas CX
+ Asia/Nicosia CY
+ Europe/Prague CZ
+ Europe/Berlin DE
+ Africa/Djibouti DJ
+ Europe/Copenhagen DK
+ America/Dominica DM
+ America/Santo_Domingo DO
+ Africa/Algiers DZ
+ America/Guayaquil EC
+ Pacific/Galapagos EC
+ Europe/Tallinn EE
+ Africa/Cairo EG
+ Africa/El_Aaiun EH
+ Africa/Asmera ER
+ Africa/Ceuta ES
+ Atlantic/Canary ES
+ Europe/Madrid ES
+ Africa/Addis_Ababa ET
+ Europe/Helsinki FI
+ Pacific/Fiji FJ
+ Atlantic/Stanley FK
+ Pacific/Kosrae FM
+ Pacific/Ponape FM
+ Pacific/Truk FM
+ Pacific/Yap FM
+ Atlantic/Faeroe FO
+ Europe/Paris FR
+ Africa/Libreville GA
+ Europe/Belfast GB
+ Europe/London GB
+ America/Grenada GD
+ Asia/Tbilisi GE
+ America/Cayenne GF
+ Africa/Accra GH
+ Europe/Gibraltar GI
+ America/Godthab GL
+ America/Scoresbysund GL
+ America/Thule GL
+ Africa/Banjul GM
+
+
+
+Newman [Page 13]
+
+Internet Draft Date and Time January 1997
+
+
+ Africa/Conakry GN
+ America/Guadeloupe GP
+ Africa/Malabo GQ
+ Europe/Athens GR
+ Atlantic/South_Georgia GS
+ America/Guatemala GT
+ Pacific/Guam GU
+ Africa/Bissau GW
+ America/Guyana GY
+ Asia/Hong_Kong HK
+ America/Tegucigalpa HN
+ Europe/Zagreb HR
+ America/Port-au-Prince HT
+ Europe/Budapest HU
+ Asia/Jakarta ID
+ Asia/Jayapura ID
+ Asia/Ujung_Pandang ID
+ Europe/Dublin IE
+ Asia/Gaza IL
+ Asia/Jerusalem IL
+ Asia/Calcutta IN
+ Indian/Chagos IO
+ Asia/Baghdad IQ
+ Asia/Tehran IR
+ Atlantic/Reykjavik IS
+ Europe/Rome IT
+ America/Jamaica JM
+ Asia/Amman JO
+ Asia/Ishigaki JP
+ Asia/Tokyo JP
+ Africa/Nairobi KE
+ Asia/Bishkek KG
+ Asia/Phnom_Penh KH
+ Pacific/Enderbury KI
+ Pacific/Kiritimati KI
+ Pacific/Tarawa KI
+ Indian/Comoro KM
+ America/St_Kitts KN
+ Asia/Pyongyang KP
+ Asia/Seoul KR
+ Asia/Kuwait KW
+ America/Cayman KY
+ Asia/Alma-Ata KZ
+ Asia/Aqtau KZ
+ Asia/Aqtobe KZ
+ Asia/Vientiane LA
+ Asia/Beirut LB
+ America/St_Lucia LC
+
+
+
+Newman [Page 14]
+
+Internet Draft Date and Time January 1997
+
+
+ Europe/Vaduz LI
+ Asia/Colombo LK
+ Africa/Monrovia LR
+ Africa/Maseru LS
+ Europe/Vilnius LT
+ Europe/Luxembourg LU
+ Europe/Riga LV
+ Africa/Tripoli LY
+ Africa/Casablanca MA
+ Europe/Monaco MC
+ Europe/Chisinau MD
+ Indian/Antananarivo MG
+ Pacific/Kwajalein MH
+ Pacific/Majuro MH
+ Europe/Skopje MK
+ Africa/Bamako ML
+ Africa/Timbuktu ML
+ Asia/Rangoon MM
+ Asia/Ulan_Bator MN
+ Asia/Macao MO
+ Pacific/Saipan MP
+ America/Martinique MQ
+ Africa/Nouakchott MR
+ America/Montserrat MS
+ Europe/Malta MT
+ Indian/Mauritius MU
+ Indian/Maldives MV
+ Africa/Blantyre MW
+ America/Ensenada MX
+ America/Mazatlan MX
+ America/Mexico_City MX
+ America/Tijuana MX
+ Asia/Kuala_Lumpur MY
+ Asia/Kuching MY
+ Africa/Maputo MZ
+ Africa/Windhoek NA
+ Pacific/Noumea NC
+ Africa/Niamey NE
+ Pacific/Norfolk NF
+ Africa/Lagos NG
+ America/Managua NI
+ Europe/Amsterdam NL
+ Europe/Oslo NO
+ Asia/Katmandu NP
+ Pacific/Nauru NR
+ Pacific/Niue NU
+ Pacific/Auckland NZ
+ Pacific/Chatham NZ
+
+
+
+Newman [Page 15]
+
+Internet Draft Date and Time January 1997
+
+
+ Asia/Muscat OM
+ America/Panama PA
+ America/Lima PE
+ Pacific/Gambier PF
+ Pacific/Marquesas PF
+ Pacific/Tahiti PF
+ Pacific/Port_Moresby PG
+ Asia/Manila PH
+ Asia/Karachi PK
+ Europe/Warsaw PL
+ America/Miquelon PM
+ Pacific/Pitcairn PN
+ America/Puerto_Rico PR
+ Atlantic/Azores PT
+ Atlantic/Madeira PT
+ Europe/Lisbon PT
+ Pacific/Palau PW
+ America/Asuncion PY
+ Asia/Qatar QA
+ Indian/Reunion RE
+ Europe/Bucharest RO
+ Asia/Anadyr RU
+ Asia/Irkutsk RU
+ Asia/Kamchatka RU
+ Asia/Krasnoyarsk RU
+ Asia/Magadan RU
+ Asia/Novosibirsk RU
+ Asia/Omsk RU
+ Asia/Vladivostok RU
+ Asia/Yakutsk RU
+ Asia/Yekaterinburg RU
+ Europe/Kaliningrad RU
+ Europe/Moscow RU
+ Europe/Samara RU
+ Africa/Kigali RW
+ Asia/Riyadh SA
+ Pacific/Guadalcanal SB
+ Indian/Mahe SC
+ Africa/Khartoum SD
+ Europe/Stockholm SE
+ Asia/Singapore SG
+ Atlantic/St_Helena SH
+ Europe/Ljubljana SI
+ Arctic/Longyearbyen SJ
+ Atlantic/Jan_Mayen SJ
+ Europe/Bratislava SK
+ Africa/Freetown SL
+ Europe/San_Marino SM
+
+
+
+Newman [Page 16]
+
+Internet Draft Date and Time January 1997
+
+
+ Africa/Dakar SN
+ Africa/Mogadishu SO
+ America/Paramaribo SR
+ Africa/Sao_Tome ST
+ America/El_Salvador SV
+ Asia/Damascus SY
+ Africa/Mbabane SZ
+ America/Grand_Turk TC
+ Africa/Ndjamena TD
+ Indian/Kerguelen TF
+ Africa/Lome TG
+ Asia/Bangkok TH
+ Asia/Dushanbe TJ
+ Pacific/Fakaofo TK
+ Asia/Ashkhabad TM
+ Africa/Tunis TN
+ Pacific/Tongatapu TO
+ Europe/Istanbul TR
+ America/Port_of_Spain TT
+ Pacific/Funafuti TV
+ Asia/Taipei TW
+ Africa/Dar_es_Salaam TZ
+ Europe/Kiev UA
+ Europe/Simferopol UA
+ Africa/Kampala UG
+ Pacific/Johnston UM
+ Pacific/Midway UM
+ Pacific/Wake UM
+ America/Adak US
+ America/Anchorage US
+ America/Boise US
+ America/Chicago US
+ America/Denver US
+ America/Detroit US
+ America/Indianapolis US
+ America/Juneau US
+ America/Los_Angeles US
+ America/Louisville US
+ America/Menominee US
+ America/New_York US
+ America/Nome US
+ America/Phoenix US
+ America/Shiprock US
+ America/Yakutat US
+ Pacific/Honolulu US
+ America/Montevideo UY
+ Asia/Tashkent UZ
+ Europe/Vatican VA
+
+
+
+Newman [Page 17]
+
+Internet Draft Date and Time January 1997
+
+
+ America/St_Vincent VC
+ America/Caracas VE
+ America/Tortola VG
+ America/St_Thomas VI
+ Asia/Saigon VN
+ Pacific/Efate VU
+ Pacific/Wallis WF
+ Pacific/Apia WS
+ Asia/Aden YE
+ Indian/Mayotte YT
+ Europe/Belgrade YU
+ Africa/Johannesburg ZA
+ Africa/Lusaka ZM
+ Africa/Kinshasa ZR
+ Africa/Lubumbashi ZR
+ Africa/Harare ZW
+
+
+6.7. Local Date/Time Format
+
+ The following format MAY be used to refer to future dates in a
+ local timezone. This is defined based on the format in section
+ 5.6.
+
+ zone-char = ALPHA / DIGIT / "-" / "_" / "/"
+ zone-name = 1*zone_char
+ ; case insensitive interpretation
+ offset-hint = time-numoffset
+
+ local-datetime = full-date "T" partial-time " " zone-name
+ [" " offset-hint]
+
+ A local-datetime represents an event relative to a specific local
+ timezone. The offset-hint represents the generator's prediction of
+ what the UTC offset will be at that local time, and may become
+ incorrect if the rules for the specified zone are changed. The
+ offset-hint MAY be omitted if the generating program only knows
+ local time, but the zone-name is REQUIRED. This format SHOULD NOT
+ be used for timestamps or past events.
+
+
+6.8. Examples
+
+ Here are some examples of Local Date/Time Format:
+
+ 1999-12-31T23:59:59 America/New_York -05:00
+
+ This represents a time one (or two if there's a leap second) second
+
+
+
+Newman [Page 18]
+
+Internet Draft Date and Time January 1997
+
+
+ before the year 2000 in the timezone used in New York City in North
+ America (currently U.S. Eastern Time). The offset-hint is the
+ number to add to the local time to get an estimate UTC for that
+ date, so this will probably be equivalent to 2000-01-01T04:59:59Z.
+
+ 2000-12-31T23:59:59 Australia/Adelaide +09:30
+
+ This represents a time one (or two if there's a leap second) second
+ before the 21st century in Adelaide, Australia. The hint suggests
+ that this will be equivalent to 2000-12-31T14:29:59Z.
+
+ 2000-03-31T02:00:00 America/Los_Angeles -08:00
+
+ The represents a time of the 2nd hour on the 31st of March in Los
+ Angeles, USA. The hint suggests that would be equivalent to 2000-
+ 03-31T10:00:00Z. However, if the U.S. government were to adopt the
+ daylight savings rules currently used by the European Union, which
+ change daylight savings on the last Sunday of March, then the time
+ would be equivalent to 2000-03-31T09:00:00Z.
+
+
+7. Acknowledgements
+
+ May thanks to the following people who have provided helpful advice
+ for this document: Ned Freed, Neal McBurnett, David Keegel, Markus
+ Kuhn, Paul Eggert and Robert Elz. Thanks are also due to
+ participants of the IETF Calendaring/Scheduling working group
+ mailing list, and participants of the timezone mailing list.
+
+
+8. References
+
+[Zeller] Chr. Zeller, "Kalender-Formeln", Acta Mathematica, Vol. 9,
+ Nov 1886.
+
+[IMAIL] Crocker, D., "Standard for the Format of Arpa Internet Text
+ Messages", RFC 822, University of Delaware, August 1982.
+
+ <ftp://ds.internic.net/rfc/rfc822.txt>
+
+[ISO8601] "Data elements and interchange formats -- Information
+ interchange -- Representation of dates and times", ISO 8601:1988(E),
+ International Organization for Standardization, June, 1988.
+
+[HOST-REQ] Braden, R., "Requirements for Internet Hosts -- Application
+ and Support", RFC 1123, Internet Engineering Task Force, October 1989.
+
+ <ftp://ds.internic.net/rfc/rfc1123.txt>
+
+
+
+Newman [Page 19]
+
+Internet Draft Date and Time January 1997
+
+
+[NTP] Mills, D., "Network Time Protocol (Version 3) Specification,
+ Implementation and Analysis", RFC 1305, University of Delaware, March
+ 1992.
+
+ <ftp://ds.internic.net/rfc/rfc1305.tar.Z>
+ <ftp://ds.internic.net/rfc/rfc1305.txt>
+
+[ITU-R-TF] International Telecommunication Union Recommendations for
+ Time Signals and Frequency Standards Emissions.
+
+ <http://www.itu.ch/publications/itu-r/iturtf.htm>
+
+
+9. Security Considerations
+
+ Since the local time zone of a site may be useful for determining a
+ time when systems are less likely to be monitored and might be more
+ susceptible to a security probe, some sites may wish to emit times
+ in UTC only. Others might consider this to be loss of useful
+ functionality at the hands of paranoia.
+
+
+10. Author's Address
+
+Chris Newman
+Innosoft International, Inc.
+1050 East Garvey Ave. South
+West Covina, CA 91790 USA
+
+Email: chris.newman@innosoft.com
+
+APPENDIX
+
+A. ISO 8601 Collected ABNF
+
+ ISO 8601 does not specify a formal grammar for the date and time
+ formats it defines. The following is an attempt to create a formal
+ grammar from ISO 8601. This is informational only and may contain
+ errors. ISO 8601 remains the authoratative reference.
+
+ Note that due to ambiguities in ISO 8601, some interpretations had
+ to be made. First, ISO 8601 is not clear if mixtures of basic and
+ extended format are permissible. This grammar permits mixtures.
+ ISO 8601 is not clear on whether an hour of 24 is permissible only
+ if minutes and seconds are 0. This assumes that an hour of 24 is
+ permissible in any context. Restrictions on date-mday in section
+ 5.7 apply. ISO 8601 states that the "T" may be omitted under some
+ circumstances. This grammar requires the "T" to avoid ambiguity.
+
+
+
+Newman [Page 20]
+
+Internet Draft Date and Time January 1997
+
+
+ ISO 8601 also requires (in section 5.3.1.3) that a decimal fraction
+ be proceeded by a "0" if less than unity. Annex B.2 of ISO 8601
+ gives examples where the decimal fractions are not preceeded by a
+ "0". This grammar assumes section 5.3.1.3 is correct and that
+ Annex B.2 is in error.
+
+ date-century = 2DIGIT ; 00-99
+ date-decade = DIGIT ; 0-9
+ date-subdecade = DIGIT ; 0-9
+ date-year = date-decade date-subdecade
+ date-fullyear = date-century date-year
+ date-month = 2DIGIT ; 01-12
+ date-wday = DIGIT ; 1-7 ; 1 is Monday, 7 is Sunday
+ date-mday = 2DIGIT ; 01-28, 01-29, 01-30, 01-31 based on month/year
+ date-yday = 3DIGIT ; 001-365, 001-366 based on year
+ date-week = 2DIGIT ; 01-52, 01-53 based on year
+
+ datepart-fullyear = [date-century] date-year ["-"]
+ datepart-ptyear = "-" [date-subdecade ["-"]]
+ datepart-wkyear = datepart-ptyear / datepart-fullyear
+
+ dateopt-century = "-" / date-century
+ dateopt-fullyear = "-" / datepart-fullyear
+ dateopt-year = "-" / (date-year ["-"])
+ dateopt-month = "-" / (date-month ["-"])
+ dateopt-week = "-" / (date-week ["-"])
+
+ datespec-full = datepart-fullyear date-month ["-"] date-mday
+ datespec-year = date-century / dateopt-century date-year
+ datespec-month = "-" dateopt-year date-month [["-"] date-mday]
+ datespec-mday = "--" dateopt-month date-mday
+ datespec-week = datepart-wkyear "W"
+ (date-week / dateopt-week date-wday)
+ datespec-wday = "---" date-wday
+ datespec-yday = dateopt-fullyear date-yday
+
+ date = datespec-full / datespec-year / datespec-month /
+ datespec-mday / datespec-week / datespec-wday / datespec-yday
+
+ Time:
+
+ time-hour = 2DIGIT ; 00-24
+ time-minute = 2DIGIT ; 00-59
+ time-second = 2DIGIT ; 00-59, 00-60 based on leap-second rules
+ time-fraction = ("," / ".") 1*DIGIT
+ time-numoffset = ("+" / "-") time-hour [[":"] time-minute]
+ time-zone = "Z" / time-numoffset
+
+
+
+
+Newman [Page 21]
+
+Internet Draft Date and Time January 1997
+
+
+ timeopt-hour = "-" / (time-hour [":"])
+ timeopt-minute = "-" / (time-minute [":"])
+
+ timespec-hour = time-hour [[":"] time-minute [[":"] time-second]]
+ timespec-minute = timeopt-hour time-minute [[":"] time-second]
+ timespec-second = "-" timeopt-minute time-second
+ timespec-base = timespec-hour / timespec-minute / timespec-second
+
+ time = timespec-base [time-fraction] [time-zone]
+
+ iso-date-time = date "T" time
+
+ Durations (periods):
+
+ dur-second = 1*DIGIT "S"
+ dur-minute = 1*DIGIT "M" [dur-second]
+ dur-hour = 1*DIGIT "H" [dur-minute]
+ dur-time = "T" (dur-hour / dur-minute / dur-second)
+ dur-day = 1*DIGIT "D"
+ dur-week = 1*DIGIT "W"
+ dur-month = 1*DIGIT "M" [dur-day]
+ dur-year = 1*DIGIT "Y" [dur-month]
+ dur-date = (dur-day / dur-month / dur-year) [dur-time]
+
+ duration = "P" (dur-date / dur-time / dur-week)
+
+ Periods:
+
+ period-explicit = date-time "/" date-time
+ period-start = date-time "/" duration
+ period-end = duration "/" date-time
+
+ period = period-explicit / period-start / period-end
+
+
+B. Day of the Week
+
+ The following is a sample C subroutine loosly based on Zeller's
+ Congruence [Zeller] which may be used to obtain the day of the
+ week:
+
+
+
+
+
+
+
+
+
+
+
+Newman [Page 22]
+
+Internet Draft Date and Time January 1997
+
+
+ char *day_of_week(int day, int month, int year)
+ {
+ char *dayofweek[] = {
+ "Sunday", "Monday", "Tuesday", "Wednesday",
+ "Thursday", "Friday", "Saturday"
+ };
+
+ /* adjust months so February is the last one */
+ month -= 2;
+ if (month < 1) {
+ month += 12;
+ --year;
+ }
+ /* split by century */
+ cent = year / 100;
+ year %= 100;
+ return (dayofweek[((26 * month - 2) / 10 + day + year
+ + year / 4 + cent / 4 - 2 * cent) % 7]);
+ }
+
+
+C. Leap Years
+
+ Here's a sample C subroutine to calculate if a year is a leap year:
+
+ /* This returns non-zero if year is a leap year. Must use 4 digit year.
+ */
+ int leap_year(int year)
+ {
+ return (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Newman [Page 23]
+