330 likes | 765 Views
Understanding ISO 8601 date and time representation formats. Tex Texin Tex@I18nGuy.com XenCraft. Objectives for this session. ISO 8601:1988 is updated in 2000. What is in ISO 8601:2000? Are there potential pitfalls in using ISO 8601, especially for internationalization?
E N D
Understanding ISO 8601 date and time representation formats Tex Texin Tex@I18nGuy.com XenCraft
Objectives for this session • ISO 8601:1988 is updated in 2000. • What is in ISO 8601:2000? • Are there potential pitfalls in using ISO 8601, especially for internationalization? • If so, are there workarounds?
Agenda Brief Overview of ISO 8601 Problem Areas Solutions
ISO 8601:2000 Overview • Dates • Calendar dates • Ordinal dates • Week dates • Time of day • Local vs. Coordinated Universal Time (UTC) • Combined date and time • Time-intervals • Recurring time-intervals
Representing dates, times, durations and intervals • Uses character representation • ISO/IEC 646 (ASCII), no spaces • Separators (Extended Format) • Hyphens, Colons, Solidus, Number sign • Truncation • Omission of higher order components • Reduced Precision • Omission of lower order components • Expansion- years < 0 or years > 9999 • Fixed length fields using leading zeros
Representing dates, times, durations and intervals • Designators • “P” is time-interval designator • “R” is recurring time-interval designator • “T” indicates start of Time elements • “W” is week designator • “Z” is UTC designator • Duration designators • Y, M, W, D, H, M, S may be used • M can be minute, month, or both
Calendar Dates • Gregorian calendar • 1875 is reference point • Common (365) and Leap (366) years • Leap is every 4th year except centennial years that are not integrally divisible by 400 • Gregorian is used even for years < 1582 (by mutual agreement). • Year 0000 is leap.
Calendar week • Monday is day 1, Sunday is day 7. • Weeks are numbered 1- 52 or 1 - 53. • Week 1 includes the first Thursday of year. • Alternatively, Week 1 includes Jan 4. • Week 1 may include 3 days of last year. • Last week may include 3 days of next year.
Representing dates • Calendar date • year, month, day number within month • Ordinal date • year, day number within year • Week date • year, week, number within week
ISO 8601:2000 Overview • Dates • Calendar dates • Ordinal dates • Week dates • Time of day • Local vs. Universal Time Coordinated (UTC) • Combined data and time • Time-intervals • Recurring time-intervals
Representing times • Hours 00-24 (allowing midnight-midnight) • Minutes 00-59 • Seconds 00-60 (allowing leap seconds) • Decimal fractions of hour, minute, second • Local and Universal (UTC) time
Combined date and time • “T” indicates start of time • Mix and match as needed: Calendar dates + local time YYYY-MM-DDThh:mm Ordinal dates + UTC time YYYY-DDDThh:mmZ Week dates + offset from UTC YYYYWwwDThh:mm±hhmm
ISO 8601:2000 Overview • Dates • Calendar dates • Ordinal dates • Week dates • Time of day • Local vs. Universal Time Coordinated (UTC) • Combined data and time • Time-intervals • Recurring time-intervals
Representing time-intervals • “P” indicates a duration (period) • Intervals come in 4 varieties: • start and end times YYYY-MM-DDThh:mm:ss/YYYY-MM-DDThh:mm:ss • durations PnYnMnDTnHnMnS P2Y10M15DT10H30M20S 2 Yr, 10 mon, 15 days, 10 hrs. 30 min. 20 sec. P6W is a duration of 6 weeks.
Representing time-intervals • The remaining 2 varieties • start time and duration YYYY-MM-DDThh:mm:ss/PnYnMnDTnHnMnS or YYYY-MM-DDThh:mm:ss/PYYYY-MM-DDThh:mm:ss 1985-04-12T23:20:50/P0001-02-15T12:30:00 • duration and end time PnYnMnDTnHnMnS/YYYY-MM-DDThh:mm:ss or PYYYY-MM-DDThh:mm:ss/YYYY-MM-DDThh:mm:ss
Recurring time-intervals • Recurring time intervals are expressed by: • # of recurrences and start and end times • # of recurrences and a duration • # of recurrences & start time & a duration • # of recurrences & duration & end time • If # of recurrences is not provided, then the number is unbounded • “R” is used to indicate recurrence
Examples of recurring time-intervals Recurring with Start and End Times: Rn/YYYY-MM-DDThh:mm:ss/YYYY-MM-DDThh:mm:ss R12/1985-04-12T23:20:50/1985-06-25T10:30:00 Recurring with a duration: Rn/PnYnMnDTnHnMnS R12/P2Y10M15DT10H20M20S Recurring with a Start Time and duration: Rn/YYYY-MM-DDThh:mm:ss/PnYnMnDTnHnMnS R12/1985-04-12T23:20:50/P2Y2M15DT12H30M0S
Benefits of ISO 8601 • Human-readable • Easy to use • Easy to parse, unambiguous • Easy to sort • Many date-time schemes exist, a standard is needed
Agenda Brief Overview of ISO 8601 Problem Areas Solutions
Ambiguities • Future leap seconds are unpredictable Is 2010-03-31T23:59:60Z valid? • Year, month, minute have varying sizes P1M = P28D or P29D or P30D or P31D • Mismatched precision 1985W50 <= 1985W501? • Truncation opens the door for Y2K issues • Variations of 8601 exist in practice • Julian, Gregorian, Emperor...
Ambiguities • Date arithmetic is not defined 2001-03-30 + P1M = 2001-04-29 (Add 30 days) 2001-03-30 + P1M = 2001-04-30 (Add 1 mon.) • Addition is not commutative or associative 2001-03-30 + P1D + P1M = 2001-04-30 2001-03-30 + P1M + P1D = 2001-05-01 • Subtraction is not the inverse of Addition • Precision of decimal fractions can vary
Conversions • Gregorian calendar adopted at different times around the world • Most calendars do not include year 0. • 8601 extends leap years into the past, other calendars do not. • Dates without times are often not qualified by time zone. • Time zones (currently) go from -13 to +12 • So the date could be +/- 1 day
Conversions • Laws determining daylight savings time change continually • Difficult to know local time offsets.
Agenda Brief Overview of ISO 8601 Problem Areas Solutions
Solutions • Mutual Agreements • Referencing other standards and implementations • e.g. Java • Standards employing 8601 may need to introduce rules or constraints • e.g. XML Schema • Restrict use of 8601 formats
Mark Davis (IBM) www.macchiato.com/unicode/timeIntervals.htm W3C Internationalization working and interest groups Resources ISO’s web page to order the standard: http://www.iso.ch/cate/d26780.html Mail list: ISO8601@yahoogroups.com Links: groups.yahoo.com/group/ISO8601/files/pdf_link.htm http://aa.usno.navy.mil/faq/docs/UT.html Acknowledgements