基本时间观念
大多数Web应用程序必须支持不同的时区,而正确处理时区绝非易事。 更糟糕的是,您必须确保各种编程语言(例如,前端JavaScript,中间件中的Java和作为数据存储库的MongoDB)之间的时间戳是一致的。 这篇文章旨在解释绝对时间和相对时间的基本概念。
时代
纪元是绝对时间基准。 大多数编程语言(例如Java,JavaScript,Python)使用Unix纪元(1970年1月1日午夜)来表示给定的时间戳,即自固定时间点引用以来经过的毫秒数。
相对数字时间戳
相对数字时间戳表示为从纪元以来经过的毫秒数。
时区
协调世界时(UTC)是最常见的时间标准。 UTC时区(相当于GMT )表示所有其他时区涉及的时间参考(通过正/负偏移量)。
UTC时区通常称为Zulu时间(Z)或UTC + 0。 日本时区为UTC + 9,而檀香山时区为UTC-10。 在Unix时代(1970年1月1日UTC时区),东京为1970年1月1日,檀香山为1969年12月31日14:00。
ISO 8601
ISO 8601是最广泛的日期/时间表示标准,它使用以下日期/时间格式:
时区 | 符号 |
---|---|
世界标准时间 | 1970-01-01T00:00:00.000 + 00:00 |
UTC祖鲁时间 | 1970-01-01T00:00:00.000 + Z |
时雄 | 1970-01-01T00:00:00.000 + 09:00 |
火奴鲁鲁 | 1969-12-31T14:00:00.000-10:00 |
Java时间基础
java.util.Date
java.util.Date绝对是最常见的时间相关类。 它表示一个固定的时间点,表示为自历元以来经过的相对毫秒数。 java.util.Date是与时区无关的 ,除了toString方法使用本地时区生成String表示形式。
java.util.Calendar
java.util.Calendar既是日期/时间工厂,也是时区感知定时实例。 它是