当前位置: 代码迷 >> J2EE >> new Date(Long l)日期错乱解决方案
  详细解决方案

new Date(Long l)日期错乱解决方案

热度:420   发布时间:2016-04-17 23:40:08.0
new Date(Long l)日期错乱
测试代码:

public static void main(String[] arg){
Date now = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
System.out.println("今天的日期:"+format.format(now));  
System.out.println("今天的日期+1天:" + format.format(new Date(now.getTime() + 1 * 24 * 60 * 60 * 1000)));
System.out.println("今天的日期+24天:" + format.format(new Date(now.getTime() + 24 * 24 * 60 * 60 * 1000)));
    System.out.println("今天的日期+25天:" + format.format(new Date(now.getTime() + 25 * 24 * 60 * 60 * 1000)));
    System.out.println("今天的日期+99天:" + format.format(new Date(now.getTime() + 99 * 24 * 60 * 60 * 1000)));     
}


运行结果:
今天的日期:2014-10-10
今天的日期+1天:2014-10-11
今天的日期+24天:2014-11-03
今天的日期+25天:2014-09-15
今天的日期+99天:2014-10-10

问题:为什么加25天就开始出现日期混乱?
------解决思路----------------------
25 * 24 * 60 * 60 * 1000 超出了int 的范围了,已经溢出了


System.out.println(24 * 24 * 60 * 60 * 1000);
System.out.println(Integer.MAX_VALUE);
System.out.println(25 * 24 * 60 * 60 * 1000);


2073600000
2147483647
-2134967296
想使用这种方式的话,可以
25L * 24 * 60 * 60 * 1000
99L * 24 * 60 * 60 * 1000
先转换为long 类型,然后就不会出错了
  相关解决方案