DOCUMENT TITLE: Year 2000 and ISO 8601 Notes.
AUTHOR: Ian Galpin.
LAST REVISED: 1997-Feb-02.
FORMATTING: 78 Characters per line
FILE NAME: Y2KGEN.TXT
Year 2000 and ISO 8601 Notes:
-----------------------------
It is well known that there is a problem with many computer programs in the
Year 2000 (often called 'Y2K' by the computer industry). Specifically, where
the year is represented by 2 digits, with '99' representing the year 1999,
'00' may be interpreted by the program as being the year 1900 rather than the
intended year 2000. This will lead to the program producing wrong answers,
making the wrong decisions, and in a few rare cases 'crashing' the system. The
use of 2-digit years will also cause human misinterpretation of data. In the
year 2001, a date of birth of 01/01/99 on a computer printout could be for a
2-year old child (1999) or for a person of 102-years old (1899), there is no
way for a casual reader to know. The solution is to use 4-digits to represent
the year throughout all programs and data, to ensure that all data input is
properly validated, and that all data output is printed using 4-digits for the
year so that there is no risk of human misinterpretation of the results
produced.
There is another problem with dates, one that can be easily solved at the same
time that 'Year-2000' solutions are provided. The problem is that '1/12/99'
is read as 1st December in Britain and as January 12th in America. This can be
solved by making the program compliant with International Standard ISO 8601,
which is implemented through Europe as European Standard EN 28601, and
specifically in Britain as British Standard BS EN 28601. The standard was
originally adopted under a different BS number way back in 1971, but seems to
have been ignored by many. The coming of the year-2000 has suddenly made this
standard very relevant. The Standard has also been adopted in America by ANSI.
The ISO 8601 method is well known in the scientific community, especially in
Astronomy where data is often exchanged internationally. Dates are written in
the order Year-Month-Day, with a fixed-length format, using leading zeroes for
day and month values between 00 and 09 inclusive.
The ISO 8601 standard is not so well known in other fields but several major
multi-national organisations use this as the default standard. In recent times
many other companies and organisations have converted to this format as part
of their Year-2000-proofing of software. It can also be used within documents,
and in any messages that pass internationally. It can be even used on Internet
'Web Pages' in the 'This Page was Last Updated On [date]' text.
International companies - those that have offices in every corner of the
globe, or do business on a global scale - stand to reap the most benefits from
converting to the ISO format.
The ISO method is modified slightly by some people. The month is printed using
a 3-character abbreviation, rather than using the 2-digit method as defined in
the standard. This makes the date more 'user friendly' to those that may not
have come across the ISO 'Year-Month-Day' method before.
So the last day of 1999 would be written as
12/31/99 in America,
31/12/99 in Britain,
or as 1999-12-31 (or 1999-Dec-31) using the ISO (or variant) format.
The ISO format is complete and unambiguous, but 'looks strange' at first. The
unofficial 'variant' is readily understood, whilst still following the general
Year-Month-Day methods of ISO 8601.
The Date can then be easily followed by a time in 24-hour format, and this
will give a logical left to right precedence across all of the data elements.
For software houses, the ISO 8601 method has other important advantages. It
removes the need for different versions of software (using different date
formats) to be produced for each individual market, or limits the amount of
changes required by different versions - program code can be re-used across
versions allowing quicker changes to be made across a range of software, less
maintenance programming required. Programs may also run faster, and use more
compact code, by using this more logical Year-Month-Day-Hour-Minute-Second
representation. Programs are smaller, as only one date format is supported,
there does not have to be several routines to deal with dates in different
formats, and a whole load of date-format menu-options can be cut out.
It may be appropriate to allow an option for 'month in digits', and 'month as
3-letter abbreviation' in the program setup; but removal of the old UK and US
ambiguous date formats from the program user options and, more importantly,
from the internal workings of the program should be a longer term goal, and
should in any case be achieved before the year 2000 arrives.
ISO format dates (e.g. 1999-12-31) on computer printouts are usually accepted
without question by many people due to the logical left to right precedence of
the data (the month in words also helps). What does not go down well is
American format dates (12/31/99) in Britain, and British format dates
(31/12/99) in America.
The 1999-12-31 or 1999-Dec-31 style is a much better way, and can be
recommended as the way forwards. It was a brave programmer that introduced
this 'strange' format into computer programs in the past, but there is now a
sea-tide of change as the world wakes up to the 'Year 2000 challenge' and
looks around for a solution to the problem. ISO 8601 provides just such a
solution, whilst also providing a solution to the international ambiguity of
date formats that has been ignored for far too long by so many programmers.
The ISO standard has been around for many years, and the methods that it
endorses have been defined in several British Standards that have been
available over the last 25 years. The Standard has now been implemented in
nearly every European country (as EN 28601), in America, and in many other
places around the world. It is the default national standard in many countries
these days (Denmark, Sweden, most Eastern European countries, Japan, Korea,
China). IBM is incorporating it into more and more of the systems and programs
that it produces; and recommends (in its Year 2000 book) its adoption as part
of any Year-2000 program upgrade.
In the short term, some programmers prefer to use the ISO method for the
internal workings and data-storage of the program, but have different user
interfaces for each national version, or have a menu option to allow the date
format on input and output to be set up by the user. This is fine as a short
term solution, but still suffers from the human misinterpretation of dates
like 1/12/99. Making the ISO format the default option with a choice of 'US'
or 'UK' format if the user really wants it is slightly better, but the long
term goal has to be ISO 8601 as the default, and only, format if all these
problems with dates and date formats are to be eradicated.
Astronomers have been using the format that is now called ISO 8601 for several
hundred years, and it causes no problems whatsoever. American data can be
processed in Japan for European users, and because everyone talks the same
ISO language mistakes and misinterpretations are substantially reduced. It has
mainly been used in scientific circles. The business world has been slow to
use this system, but it is gradually becoming better known.
The need for ISO 8601 becomes ever greater as firms do more business on an
international scale. This is especially so where connections to Internet are
provided, meaning that the data could be accessed from anywhere in the world.
The end user of your data may possibly have no idea as to your location - it
is therefore important that data is posted in an internationally accepted
format rather than using some local or national standard that may not be
understood, or may be misinterpreted, elsewhere on the planet.
Times are also covered by the ISO standard. But the standard just sets in
print what most of the world has already been doing for the last 50 years or
more. That is, to print times in the order Hours:Minutes:Seconds and to use
the 24-hour system (not the 12-hour am/pm one). Leading zeroes are used for
digits 00 to 09 inclusive within each number field.
Non-ISO Date Formats in Common Use (English Language):
------------------------------------------------------
1/12/99 01/12/99 1/12/1999 01/12/1999
1.12.99 01.12.99 1.12.1999 01.12.1999
1-12-99 01-12-99 1-12-1999 01-12-1999
1 12 99 01 12 99 1 12 1999 01 12 1999
12/1/99 12/01/99 12/1/1999 12/01/1999
12.1.99 12.01.99 12.1.1999 12.01.1999
12-1-99 12-01-99 12-1-1999 12-01-1999
12 1 99 12 01 99 12 1 1999 12 01 1999
1/Dec/99 01/Dec/99 1/Dec/1999 01/Dec/1999
1.Dec.99 01.Dec.99 1.Dec.1999 01.Dec.1999
1-Dec-99 01-Dec-99 1-Dec-1999 01-Dec-1999
1 Dec 99 01 Dec 99 1 Dec 1999 01 Dec 1999
1 Dec, 99 01 Dec, 99 1 Dec, 1999 01 Dec, 1999
Dec/1/99 Dec/01/99 Dec/1/1999 Dec/01/1999
Dec.1.99 Dec.01.99 Dec.1.1999 Dec.01.1999
Dec-1-99 Dec-01-99 Dec-1-1999 Dec-01-1999
Dec 1 99 Dec 01 99 Dec 1 1999 Dec 01 1999
Dec 1, 99 Dec 01, 99 Dec 1, 1999 Dec 01, 1999
1/XII/99 01/XII/99 1/XII/1999 01/XII/1999
1.XII.99 01.XII.99 1.XII.1999 01.XII.1999
1-XII-99 01-XII-99 1-XII-1999 01-XII-1999
1 XII 99 01 XII 99 1 XII 1999 01 XII 1999
1/December/99 01/December/99 1/December/1999 01/December/1999
1.December.99 01.December.99 1.December.1999 01.December.1999
1-December-99 01-December-99 1-December-1999 01-December-1999
1 December 99 01 December 99 1 December 1999 01 December 1999
1 December, 99 01 December, 99 1 December, 1999 01 December, 1999
December/1/99 December/01/99 December/1/1999 December/01/1999
December.1.99 December.01.99 December.1.1999 December.01.1999
December-1-99 December-01-99 December-1-1999 December-01-1999
December 1 99 December 01 99 December 1 1999 December 01 1999
December 1, 99 December 01, 99 December 1, 1999 December 01, 1999
1st December 99 01-December, 99 1st December 1999 01-December,1999
1st December, 99 1st Dec, 99 1st December, 1999 1st Dec, 1999
December 1st 99 December-01, 99 December 1st 1999 December-01,1999
December 1st, 99 Dec 1st, 99 December 1st, 1999 Dec 1st, 1999
Time formats in Common Use:
---------------------------
4:35 am (9:22 pm) 04:35 am (09:22 pm) 4:35 (21:22) 04:35 (21:22)
4.35 am 04.35 am 4.35 04.35
4,35 am 04,35 am 4,35 04,35
At present, where dates and times are written together, a variety of methods
are used. The date may be written first, followed by the time; the time may be
first; or in some cases the time may even be embedded in the date (as in the
example of 'December 1st, 4:35am, 1999') as seen in some American software.
Different separators and punctuation may also be used. All of these various
combinations and variants add up to over a thousand ways of writing the date
and time. Many are ambiguous (in day and month). Others fail at the year 2000.
Many do not have a fixed length. This makes looking down lists more difficult.
The solution .....
Use the ISO 8601 format (Year-Month-Day Hour:Minute:Second).
Viz: 1999-12-01 04:35:00 which may be written instead as
1999.12.01-04:35:00 in some European countries, or as
1999-Dec-01 04:35:00 in words (3-letter abbreviation).
Much better! Try it and see .....
1997-02-02\ISO8601\General
This document is CopyRight Ian Galpin, 19 Palmer Road, Poole, Dorset, England,
BH15 3AR. Permission is given for distribution via Internet and via magnetic
media only. No fee may be charged for this distribution and the document shall
be passed on in full, no alterations are permitted. For permission to reprint
or use in a business environment, write to the author at the address above.
Comments and suggestions on any Y2K or related topic are also always welcomed.
Key Words for Internet Search-Engines: Year2000 Year 2000 Y2K Millennium VHF
Computer Problem Crash Astronomy Date Time Day Julian Gregorian Calendar UHF
ISO Standard ISO8601 ISO 8601 BSEN28601 BS EN 28601 Format Month UTC GMT SHF
JD UT International Program Programming Data Amateur Ham Radio Contest IARU