【问题标题】:Algorithm of Java Date getTimeJava Date getTime的算法
【发布时间】:2012-05-27 21:25:51
【问题描述】:

java.util.Date.getTime 方法如何将给定的日期和时间转换为长数字?

Java API 文档说 - “返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。”

感谢任何帮助。

【问题讨论】:

  • 可以访问JDK源码看看。

标签: java datetime date time gettime


【解决方案1】:

查看Date.java 源代码。

您会看到,在最简单的情况下,Date 对象存储自 1970 年以来的毫秒数,而不是日期/时间等。

【讨论】:

    【解决方案2】:

    实际上,尽管 Java API 文档中的定义显然很明确,但有趣的是,报告的毫秒数并不是自 1970 年 1 月 1 日 00 日以来经过的实际物理毫秒数或秒数格林威治标准时间:00:00。它实际上是物理秒数加上人为插入的闰秒数

    【讨论】:

    • System.currentTimeMillis() 正式与操作系统计时器相关 - 请参阅 stackoverflow.com/questions/14065355/…,因此它可能不反映闰秒。我在 Windows 7 上对此进行了测试,它不包括闰秒。
    • @javaPhobic 我相信我们在说同样的事情:如果闰秒的数量没有“反映”(即没有考虑),那么给出的值就是实际经过时间的长度(即自 1970 年 1 月 1 日以来使用秒表获得的时间)加上已插入的闰秒总和。
    • 我认为它应该是负数,即 getTime() 的长返回是实际经过的毫秒数减去已插入的闰秒总和。
    猜你喜欢
    • 2020-01-12
    • 2011-02-10
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 2020-03-12
    • 2019-09-05
    • 2020-08-23
    • 2015-05-25
    相关资源
    最近更新 更多