代码之家  ›  专栏  ›  技术社区  ›  Denys S.

java日期何时崩溃?

  •  18
  • Denys S.  · 技术社区  · 14 年前

    AFAIK java以毫秒的形式将日期存储在长变量中。因此,有一天,将没有价值(因为长有最大值),这将对应于那个时刻的时间。你知道什么时候会发生吗?

    2 回复  |  直到 14 年前
        1
  •  56
  •   Jon Skeet    14 年前

    很容易发现:

    public class Test {
        public static void main(String[] args) {
            System.out.println(new java.util.Date(Long.MAX_VALUE));
        }
    }
    

    输出(在我的盒子上):

    Sun Aug 17 07:12:55 GMT 292278994
    

    你可能需要从中减去一点 Long.MAX_VALUE 以应付你的时区溢出的范围很长,但它会给出一个合理的估计:)

        2
  •  26
  •   Community Mr_and_Mrs_D    7 年前

    根据电流 leap-year 规定每年的平均天数为

    365+1/4 1/100+1/400=每年365.2425天

    这意味着我们平均每年有31556952000毫秒。

    long值表示自 Epoch (1970年1月的第一)和Java长代表的最大数是2。 63个 1,所以下面的计算

    1970+(2) 63个 1) /31556952000

    显示此表示将溢出年份292278994。


    这个可以,作为 Jon Skeet points out ,由确认

    -> System.out.println(new Date(Long.MAX_VALUE));
    Sun Aug 17 08:12:55 CET 292278994