Date
Date
类表示特定的时刻,精度为毫秒。
在JDK 1.1之前, Date
类还有两个附加功能。 它允许将日期解释为年,月,日,小时,分钟和秒值。 它还允许格式化和解析日期字符串。 不幸的是,这些功能的API不适合国际化。 从JDK 1.1开始, Calendar
类应该用于在日期和时间字段之间进行转换,而DateFormat
类应该用于格式化和解析日期字符串。 不推荐使用Date
中的相应方法。
尽管Date
类旨在反映协调世界时(UTC),但它可能不会完全这样做,具体取决于Java虚拟机的主机环境。 几乎所有现代操作系统都假设在所有情况下1天= 24×60×60 = 86400秒。 然而,在UTC中,每年或每两年大约有一次,称为“闰秒”。 闰秒总是作为当天的最后一秒添加,并且总是在12月31日或6月30日。例如,由于增加了闰秒,1995年的最后一分钟长61秒。 大多数计算机时钟都不够精确,无法反映闰秒的区别。
一些计算机标准是根据格林威治标准时间(GMT)定义的,相当于通用时间(UT)。 GMT是该标准的“民用”名称; UT是同一标准的“科学”名称。 UTC和UT之间的区别在于UTC是基于原子钟的,而UT是基于天文观测,对于所有实际目的而言,这是一种无形的精细分裂。 由于地球的旋转不均匀(它以慢速减速并以复杂的方式加速),因此UT并不总是均匀流动。 根据需要将闰秒引入UTC,以便将UTC保持在UT1的0.9秒内,UT1是应用了某些更正的UT版本。 还有其他时间和日期系统; 例如,基于卫星的全球定位系统(GPS)使用的时间标度与UTC同步,但不会针对闰秒进行调整。 美国海军天文台(USNO)提供了一个有趣的进一步信息来源:
http://www.usno.navy.mil/USNO
以及关于“时间系统”的材料:
http://www.usno.navy.mil/USNO/time/master-clock/systems-of-time
它描述了各种不同的时间系统,包括UT,UT1和UTC。
在接受或返回年,月,日,小时,分钟和秒值的所有Date
类方法中,使用以下表示:
- 年y由整数y
- 1900
。 - 一个月由0到11的整数表示; 0是1月,1是2月,依此类推; 因此11月是12月。
- 日期(月中的某天)以通常的方式由1到31的整数表示。
- 小时由0到23之间的整数表示。因此,从午夜到凌晨1点的小时是小时0,从中午到下午1点的小时是小时12。
- 一分钟由通常方式的0到59的整数表示。
- 第二个由0到61的整数表示; 值60和61仅在闰秒发生,甚至仅在实际正确跟踪闰秒的Java实现中发生。 由于当前引入闰秒的方式,在同一分钟内发生两个闰秒的可能性极小,但此规范遵循ISO C的日期和时间约定。
在所有情况下,为这些目的提供方法的论据不必落在指定的范围内; 例如,日期可以指定为1月32日,并解释为2月1日。
推荐阅读
-
el-date-picker 只设置可选择的特定日期
-
全面解析:如何在微信小程序中使用new Date获取时间
-
四种在Java中获取当前日期和时间的方法:利用java.util.Date类
-
Java中获取当前日期和时间的多种方法:详解New Date与java.util.Date的区别
-
玩转 Ruby 日期与时间 (Date & Time)
-
如何在JavaScript中使用new Date()格式化日期?
-
深入理解JavaScript中的Date对象
-
如何在JS前端将Date对象或秒数转换为时间格式?
-
JavaScript Date对象的日期格式转换教程
-
如何在JavaScript中格式化新的Date对象并获取时间戳?