通过使用java.util.Date可能出现下溢错误

前端之家收集整理的这篇文章主要介绍了通过使用java.util.Date可能出现下溢错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这段代码
package test;

import java.util.Date;

public class DateUnderflow {

    public static void main(String[] args) {
        Long timestamp = -8120649749785140250L;
        System.out.println(new Date(timestamp));
    }
}

产生以下输出

"Sat Aug 03 10:00:59 CET 257325894"

怎么会?没有例外的下溢?

Doc说日期(长日期)的日期参数是自纪元以来的毫秒数,所以我有点惊讶地发现自己远未到来.

我的设置:

> Linux薄荷17.1
> Eclipse Luna Service Release 1a(4.4.1)
> java7-openjdk-amd64

解决方法

RTFM( manual)

public Date(long date)

Constructs a Date object using the given
milliseconds time value. If the given milliseconds value contains time
information,the driver will set the time components to the time in
the default time zone (the time zone of the Java virtual machine
running the application) that corresponds to zero GMT.

Parameters:

date – milliseconds since January 1,1970,00:00:00 GMT not to exceed
the milliseconds representation for the year 8099. A negative number
indicates the number of milliseconds before January 1,00:00:00
GMT.

不要超过8099年的毫秒表示

除此之外,我最有可能通过以下方式节省时间:如果你在java中处理时间使用joda时间库:

http://www.joda.org/joda-time/

猜你在找的Java相关文章