International standard date and time notation
A summary of the international standard date and time notation
by
Markus Kuhn
International Standard ISO 8601 specifies numeric representations
of date and time. This standard notation helps to avoid confusion in
international communication caused by the many different national
notations and increases the portability of computer user interfaces.
In addition, these formats have several important advantages for
computer usage compared to other traditional date and time notations.
The time notation described here is already the de-facto standard in
almost all countries and the date notation is becoming increasingly
popular.
Especially authors of Web pages and software engineers who
design user interfaces, file formats, and communication protocols
should be familiar with ISO 8601.
Contents:
Date
time of
day
time zone
software
hints
Date
The international standard date notation is
YYYY-MM-DD
where YYYY is the year in the usual Gregorian calendar, MM is the
month of the year between 01 (January) and 12 (December), and DD is
the day of the month between 01 and 31.
For example, the fourth day of February in the year 1995 is written
in the standard notation as
1995-02-04
Other commonly used notations are e.g. 2/4/95, 4/2/95, 95/2/4,
4.2.1995, 04-FEB-1995, 4-February-1995, and many more. Especially the
first two examples are dangerous, because as both are used quite often
in the U.S. and in Great Britain and both cannot be distinguished, it
is unclear whether 2/4/95 means 1995-04-02 or 1995-02-04. The date
notation 2/4/5 has at least six reasonable interpretations (assuming
that only the twentieth and twenty-first centuries are reasonable
candidates in our life time).
Advantages of the ISO 8601 standard date notation compared to other
commonly used variants:
easily readable and writeable by software (no ‘JAN’, ‘FEB’, ...
table necessary)
easily comparable and sortable with a trivial string
comparison
language independent
cannot be confused with other popular date notations
consistency with the common 24h time notation system, where the
larger units (hours) are also written in front of the smaller ones
(minutes and seconds)
strings containing a date followed by a time are also easily
comparable and sortable (e.g. write “1995-02-04 22:45:00”)
the notation is short and has constant length, which makes both
keyboard data entry and table layout easier
identical to the Chinese date notation, so the largest cultural
group (>25%) on this planet is already familiar with it :-)
date notations with the order “year, month, day” are in addition
already widely used e.g. in Japan, Korea, Hungary, Sweden, Finland,
Denmark, and a few other countries and people in the U.S. are already
used to at least the “month, day” order
a 4-digit year representation avoids overflow problems after
2099-12-31
As dates will look a little bit strange anyway starting with
2000-01-01 (e.g. like 1/1/0), it has been suggested that the year 2000
is an excellent opportunity to change to the standard date
notation.
ISO 8601 is only specifying numeric notations and does not cover
dates and times where words are used in the representation. It is not
intended as a replacement for language-dependent worded date notations
such as “24. Dezember 2001” (German) or “February 4, 1995” (US
English). ISO 8601 should however be used to replace notations such as
“2/4/95” and “9.30 p.m.”.
Apart from the recommended primary standard notation
YYYY-MM-DD
, ISO 8601 also specifies a number of
alternative formats for use in applications with special requirements.
All of these alternatives can easily and automatically be
distinguished from each other:
The hyphens can be omitted if compactness of the representation is
more important than human readability, for example as in
19950204
If only the month or even only the year is of interest:
1995-02
or
1995
In commercial and industrial applications (delivery times,
production plans, etc.), especially in Europe, it is often required to
refer to a week of a year. Week 01 of a year is by definition the
first week that has the Thursday in this year, which is equivalent to
the week that contains the fourth day of January. In other words, the
first week of a new year is the week that has the majority of its days
in the new year. Week 01 might also contain days from the previous
year and the week before week 01 of a year is the last week (52 or 53)
of the previous year even if it contains days from the new year. A
week starts with Monday (day 1) and ends with Sunday (day 7). For
example, the first week of the year 1997 lasts from 1996-12-30 to
1997-01-05 and can be written in standard notation as
1997-W01
or
1997W01
The week notation can also be extended by a number indicating the
day of the week. For example, the day 1996-12-31, which is the Tuesday
(day 2) of the first week of 1997, can also be written as
1997-W01-2
or
1997W012
for applications like industrial planning where many things like
shift rotations are organized per week and knowing the week number and
the day of the week is more handy than knowing the day of the
month.
An abbreviated version of the year and week number like
1995W05
is sometimes useful as a compact code printed on a product that
indicates when it has been manufactured.
Note:
The ISO standard avoids
explicitly stating the possible range of week numbers, but this can
easily be deduced from the definition. Possible ISO week numbers are
in the range 01 to 53. A year always has a week 52. (There is one
historic exception: the year in which the Gregorian calendar was
introduced had less than 365 days and less than 52 weeks.)
Proof:
Per definition, the first week of a year is
W01 and consequently days before week W01 belong to the previous year
and so there is no week with lower numbers. Considering the highest
possible week number, the worst case is a leap year like 1976 that
starts with a Thursday, because this keeps the highest possible number
of days of W01 in the previous year, i.e. 3 days. In this case, the
Sunday of W52 of the worst case year is day number 4+51*7=361 and
361-366=5 days of W53 belong still to this year, which guarantees that
in the worst case year day 4 (Thursday) of W53 is not yet in the next
year, so a week number 53 is possible. For example, the 53 weeks of
the worst case year 1976 started with 1975-12-29 = 1976-W01-1 and
ended with 1977-01-02 = 1976-W53-7. On the other hand, considering the
lowest number of the last week of a year, the worst case is a non-leap
year like 1999 that starts with a Friday, which ensures that the first
three days of the year belong to the last week of the previous year.
In this case, the Sunday of week 52 would be day number 3+52*7=367,
i.e. only the last 367-365=2 days of the W52 reach into the next year
and consequently, even a worst case year like 1999 has a week W52
including the days 1999-12-27 to 2000-01-02. q.e.d.
Both day and year are useful units of structuring time, because the
position of the sun on the sky, which influences our lives, is
described by them. However the 12 months of a year are of some obscure
mystic origin and have no real purpose today except that people are
used to having them (they do not even describe the current position of
the moon). In some applications, a date notation is preferred that
uses only the year and the day of the year between 001 and 365 (366 in
leap years). The standard notation for this variant representing the
day 1995-02-04 (that is day 035 of the year 1995) is
1995-035
or
1995035
Leap years are years with an additional day YYYY-02-29, where the
year number is a multiple of four with the following exception: If a
year is a multiple of 100, then it is only a leap year if it is also a
multiple of 400. For example, 1900 was not a leap year, but 2000 is
one.
Time of day
The international standard notation for the time of day is
hh:mm:ss
where hh is the number of complete hours that have passed since
midnight (00-24), mm is the number of complete minutes that have
passed since the start of the hour (00-59), and ss is the number of
complete seconds since the start of the minute (00-60). If the hour
value is 24, then the minute and second values must be zero.
Note:
The value 60 for ss might
sometimes be needed during an inserted
leap second
in an
atomic time scale like Coordinated Universal Time (UTC). A single leap
second 23:59:60 is inserted into the UTC time scale every few years as
announced by the
International Earth
Rotation Service
in Paris, to keep UTC from wandering away more
than 0.9 s from the less constant astronomical time scale UT1,
which is defined by the actual rotation of the earth.
In
practice
you are not very likely to see a clock showing 23:59:60.
Most synchronized clocks resynchronize again to UTC some time after a
leap second has happened, or they temporarily slow down near the time
of a leap second, to avoid any disruption that an out-of-range
timestamp might otherwise cause.
An example time is
23:59:59
which represents the time one second before midnight.
As with the date notation, the separating colons can also be
omitted as in
235959
and the precision can be reduced by omitting the seconds or both
the seconds and minutes as in
23:59
2359
, or
23
It is also possible to add fractions of a second after a decimal
dot or comma, for instance the time 5.8 ms before midnight can be
written as
23:59:59.9942
or
235959.9942
As every day both starts and ends with midnight, the two notations
00:00
and
24:00
are available to
distinguish the two midnights that can be associated with one date.
This means that the following two notations refer to exactly the same
point in time:
1995-02-04 24:00
1995-02-05
00:00
In case an unambiguous representation of time is required, 00:00 is
usually the preferred notation for midnight and not 24:00. Digital
clocks display 00:00 and not 24:00.
ISO 8601 does not specify whether its notations specify a point in
time or a time period. This means for example that ISO 8601 does not
define whether 09:00 refers to the exact end of the ninth hour of the
day or the period from 09:00 to 09:01 or anything else. The users of
the standard must somehow agree on the exact interpretation of the
time notation if this should be of any concern.
If a date and a time are displayed on the same line, then always
write the date in front of the time. If a date and a time value are
stored together in a single data field, then ISO 8601 suggests that
they should be separated by a Latin capital letter T, as in
19951231T235959
A remark for readers from the U.S.:
The 24h time notation specified here has already been the de-facto
standard all over the world in written language for decades. The only
exceptions are a few English-speaking countries, where still notations
with hours between 1 and 12 and additions like “a.m.” and “p.m.” are
in wide use. The common 24h international standard notation is widely
used now even in England (e.g. at airports, cinemas, bus/train
timetables, etc.). Most other languages do not even have abbreviations
like “a.m.” and “p.m.” and the 12h notation is certainly hardly ever
used on Continental Europe to write or display a time. Even in the
U.S., the military and computer programmers have been using the 24h
notation for a long time.
The old English 12h notation has many disadvantages like:
It is longer than the normal 24h notation.
It takes somewhat more time for humans to compare two times in 12h
notation.
It is not clear how 00:00, 12:00 and 24:00 are represented. Even
encyclopedias and style manuals contain contradicting descriptions and
a common quick fix seems to be to avoid “12:00 a.m./p.m.” altogether
and write “noon”, “midnight”, or “12:01 a.m./p.m.” instead, although
the word “midnight” still does not distinguish between 00:00 and 24:00
(midnight at the start or end of a given day).
It makes people often believe that the next day starts at the
overflow from “12:59 a.m.” to “1:00 a.m.”, which is a common problem
not only when people try to program the timer of VCRs shortly after
midnight.
It is not easily comparable with a string compare operation.
It is not immediately clear for the unaware, whether the time
between “12:00 a.m./p.m.” and “1:00 a.m./p.m.” starts at 00:00 or at
12:00, i.e. the English 12h notation is more difficult to
understand.
Please consider the 12h time to be a relic from the dark ages when
Roman numerals were used, the number zero had not yet been invented
and analog clocks were the only known form of displaying a time.
Please avoid using it today, especially in technical applications!
Even in the U.S., the widely respected
Chicago Manual of
Style
now recommends using the international standard time
notation in publications.
A remark for readers from German speaking
countries:
The German standard DIN 5008, which specifies typographical rules
for German texts written on typewriters, was updated in 1996-05. The
old German numeric date notations DD.MM.YYYY and DD.MM.YY have been
replaced by the ISO date notations YYYY-MM-DD and YY-MM-DD. Similarly,
the old German time notations hh.mm and hh.mm.ss have been replaced by
the ISO notations hh:mm and hh:mm:ss. Those new notations are now also
mentioned in the latest edition of the
Duden
. The German
alphanumeric date notation continues to be for example “3. August
1994” or “3. Aug. 1994”. The corresponding Austrian standard has
already used the ISO 8601 date and time notations before.
ISO 8601 has been adopted as European Standard EN 28601 and is
therefore now a valid standard in all EU countries and all conflicting
national standards have been changed accordingly.
Time zone
Without any further additions, a date and time as written above is
assumed to be in some local time zone. In order to indicate that a
time is measured in
Universal Time (UTC)
you can append a capital letter
to a time as in
23:59:59Z
or
2359Z
Note:
The Z stands for the “zero
meridian”, which goes through Greenwich in London, and it is also
commonly used in radio communication where it is pronounced “Zulu”
(the word for Z in the international radio alphabet).
Universal Time
(sometimes also called “Zulu Time”) was called Greenwich Mean Time
(GMT) before 1972, however this term should no longer be used. Since
the introduction of an international atomic time scale, almost all
existing civil time zones are now related to UTC, which is slightly
different from the old and now unused GMT.
The strings
+hh:mm
+hhmm
, or
+hh
can be appended to the local time to indicate that the local time
zone used is hh hours and mm minutes ahead of UTC. For time zones west
of the zero meridian, which are behind UTC, one of the negative
offsets
-hh:mm
-hhmm
, or
-hh
is appended instead, to indicate that the preceding local time is
hh hours and mm minutes behind UTC. For example, Central European Time
(CET), which is an hour ahead of UTC, is indicated by appending +0100,
while U.S./Canadian Eastern Standard Time (EST), which is five hours
behind UTC, is indicated by appending -0500. Therefore, the following
three strings all indicate the same point in time (noon UTC):
12:00Z
13:00+01:00
0700-0500
There is no international standard that specifies letter
abbreviations for civil time zones like CET, EST, etc., and sometimes
the same abbreviation is even used for two very different time zones.
In addition, politicians enjoy modifying the rules for civil time
zones, especially for daylight saving times, every couple of years, so
the only really reliable way of describing a local time zone is to
specify numerically the difference of that local time to UTC. Better
use directly UTC as your only time zone, where this is possible, and
then you will not have to worry about time zones and daylight saving
time changes at all.
More information about time zones
Paul Eggert, Arthur Olson, and others maintain
database of all
current and many historic time zone changes and daylight saving time
algorithms
. It is now available as the
IANA Time Zone Database
in the
tzcode*
and
tzdata*
files. Most Unix
time-zone handling implementations are based on this package.
Some hints on using ISO 8601 in software
The ISO 8601 notation is today the commonly recommended format of
representing date and time as human-readable strings in new plain-text
communication protocols and file formats. Several standards and
profiles have been derived from ISO 8601, including
RFC 3339
and a
W3C note on date and time
formats
The C and POSIX standards define for the
strftime()
function and the
date
utility a notation for defining date and time representations. Here
are some examples of how they can be used to produce ISO 8601
output:
format string
output
%Y-%m-%d
1999-12-31
%Y-%j
1999-365
%G-W%V-%u
1999-W52-5
%H:%M:%S
23:59:59
Other links about date, time, and calendars
Some other interesting sources of information about date and time
on the Internet are for example the
Glossary
of Frequency and Timing Terms
and the
FAQ
provided by
NIST
the
Yahoo
Science:Measurements and Units:Time
link collection, the
U.S. Naval Observatory Server
, the
International Earth Rotation Service
(IERS)
(for time gurus only!), the
Network Time Protocol (NTP)
, the time and
calendar section of the
USENET sci.astro
FAQ
, and the
Calendar FAQ
This was a brief overview of the ISO 8601 standard, which covers
only the most useful notations and includes some additional related
information. The full standard defines in addition a number of more
exotic notations including some for periods of time. The ISO 8601:2004
standard (3rd edition) itself can only be ordered on paper or as a PDF file on
CD-ROM either via ISO’s web site
online
or from
International Organization for
Standardization
Case postale 56
1, rue de Varembé
CH-1211 Genève 20
Switzerland
phone: +41 22 749 01 11
fax: +41 22 733 34 30
email: sales at isocs.iso.ch
Another summary of ISO 8601 is
Jukka Korpela’s page
and there are further related pages listed in the
Open Directory
The committee in charge of ISO 8601 is ISO TC 154 and the editor of
the second edition ISO 8601:2000 was
Louis Visser.
I wish to thank
Edward
M. Reingold
for developing the fine GNU Emacs calendar functions,
as well as Rich Wales, Mark Brader, Paul Eggert, and others in the
USENET discussion groups comp.std.internat, comp.protocols.time.ntp,
and sci.astro for valuable comments about this text.
Some media coverage:
Jon G. Auerbach, Wall Street Journal, 1999-06-01, page A1.
You might also be interested in the
International standard
paper sizes
Web page.
This work is
licensed under a
Creative Commons
Attribution
4.0 International License
Markus Kuhn
created 1995 – last modified 2020-06-16 –