ISO 8601
国际标准化组织的国际标准ISO 8601是日期和时间的表示方法,全称为《数据存储和交换形式·信息交换·日期和时间的表示方法》。最新为第三版ISO8601:2004,第一版为ISO8601:1988,第二版为ISO8601:2000。
-
目的: ISO 8601的目标是规定日期和时间的数字表示,以避免由于不同国家使用的各种不同记法而在国际交流中引起混淆,并提高计算机用户界面的可移植性。
-
计算机使用的重要优势: ISO 8601的格式相对于传统的日期和时间表示法,在计算机应用中具有几个重要优势。标准化有助于在不同系统之间进行数据交换和互操作性。
-
事实上的标准: ISO 8601中描述的时间表示法已经被几乎所有国家广泛接受为事实上的标准。日期表示法也逐渐变得越来越流行。
-
对于网页作者和软件工程师的重要性: 特别是那些设计用户界面、文件格式和通信协议的网页作者和软件工程师应该熟悉ISO 8601。
日期标准
- 日期格式:
- 标准日期格式为YYYY-MM-DD(例如,1995-02-0)
- YYYY表示年份,MM表示月份,DD表示月份中的日期。
- 替代表示法:
- 如果紧凑性比人类可读性更重要,可以省略标准表示法中的连字符(例如,19950204)。
- 表示仅包含月份或年份也是可以接受的(例如,1995-02或1995)。
- 周表示法:
ISO 8601引入了商业和工业应用的周表示法。- 第01周被定义为具有本年度第四天的周,相当于包含一月第四天的那一周。
- 周从星期一(第1天)开始,以星期日(第7天)结束。
- 周表示法可以扩展到包括星期几的表示(例如,1997-W01-2表示星期二)。
- 年份和周数的简写:
- 年份和周数的简写版本(例如,1995W05)对于产品上印刷制造日期的紧凑代码很有用。
- 闰年:
- 通过附加日期YYYY-02-29来识别闰年。
- 闰年是四的倍数,但年份可被100整除,除非它还可被400整除。
- 年份和一年中的第几天的表示法:
- 一些应用更喜欢只使用年份和一年中的第几天的表示法(例如,1995-035表示1995年的第35天)。
时间标准
ISO 8601规定了一种国际标准的时间表示法,其关键要素包括:
- 时间格式:
- 标准时间格式为hh:mm:ss(例如,23:59:59)。
- hh表示自午夜以来经过的完整小时数(00-24)。
- mm表示自小时开始以来经过的完整分钟数(00-59)。
- ss表示自分钟开始以来经过的完整秒数(00-60)。注意,秒数可以是60,用于插入闰秒。
- Leap Seconds(闰秒):
- 在协调世界时(UTC)等原子时间尺度中,可能需要将秒数设为60,以插入闰秒。闰秒每隔几年由巴黎国际地球自转服务宣布一次,以保持UTC与不太恒定的天文时间尺度UT1之间不超过0.9秒的偏差。
- 两个午夜的表示:
- 为了区分一天中的两个午夜,ISO 8601提供了两个表示法:00:00和24:00,它们表示同一时刻。
- 其他表示法:
- 除了使用冒号的标准表示法外,冒号也可以省略,例如235959。
- 还可以通过省略秒或秒和分钟来降低精度,例如23:59,2359,或23。
- 可以在小数点或逗号后添加秒的小数部分,例如23:59:59.9942或235959.9942。
- 日期和时间的组合:
- 如果日期和时间在同一行上显示,ISO 8601建议始终将日期放在时间之前。
- 如果将日期和时间值存储在单个数据字段中,则ISO 8601建议使用拉丁大写字母T将它们分隔,例如19951231T235959。
- 关于12小时制的说明:
- ISO 8601不规定其表示法是指时间点还是时间段。
- 12小时制在英语国家仍然普遍使用,但ISO 8601强烈推荐使用24小时制,因为它更简洁、更一致,避免了12小时制的一些不足之处。
时区标准
ISO 8601规定了一种用于表示日期和时间的时区信息的方法:
- 协调世界时(UTC):
- 如果日期和时间是基于协调世界时(UTC)的,可以在时间后附加大写字母Z,例如23:59:59Z或2359Z。
- Z代表“零子午线”,通过伦敦的格林威治。在无线电通信中,Z通常被发音为“Zulu”(国际无线电字母表中Z的词)。请注意,UTC有时也称为“Zulu Time”,而格林威治平均时间(GMT)这个术语在1972年之后就不再使用了。
- 本地时间和时区偏移:
- 如果时间是基于本地时间的,可以附加时区偏移,表示本地时间相对于UTC的差异。
- 用于表示偏移的字符串可以是+hh:mm,+hhmm,+hh(表示本地时间比UTC快),也可以是-hh:mm,-hhmm,-hh(表示本地时间比UTC慢)。
- 例如,中欧时间(CET)比UTC快1小时,可以表示为+0100。而美国/加拿大东部标准时间(EST)比UTC慢5小时,可以表示为-0500。
- 因此,以下三个字符串都表示同一时刻(UTC中午):12:00Z,13:00+01:00,0700-0500。
- 时区缩写的问题:
- 并没有国际标准规定民用时区的字母缩写,如CET,EST等,有时甚至相同的缩写可能用于两个非常不同的时区。
- 政治家们喜欢每隔几年修改民用时区的规则,特别是夏令时,因此描述本地时区的唯一真正可靠的方法是数值地指定该本地时间与UTC的差异。
- 最好直接使用UTC作为唯一的时区,如果可能的话,那么就不必担心时区和夏令时的变化。