This question already has answers here:
Java Milliseconds in Year
(9个答案)
6年前关闭。
这是场景:
如果我将
当我通过
我已经检查了
谁能给我一些关于这个问题的解释?非常感谢!
在此
1393430400,这将强制转换为
(9个答案)
6年前关闭。
这是场景:
如果我将
int
传递给Date,如下所示,则输出将为Thu Jan 22 20:56:36 CST 1970
:System.out.println(new Date(1393430400*1000));
当我通过
long
时,输出正是我想要的:Thu Feb 27 00:00:00 CST 2014
System.out.println(new Date((long)1393430400*1000));
我已经检查了
new Date(long l)
调用的方法。这是相同的:public Date(long date) {
fastTime = date;
}
谁能给我一些关于这个问题的解释?非常感谢!
最佳答案
System.out.println(new Date(1393430400*1000));
在此
1393430400
中,作为int
将overflow
。一些不同的值将乘以1000
,因此您将获得日期。 System.out.println(new Date((long)1393430400*1000));
1393430400,这将强制转换为
long
,乘以1000将成为long
和no overflow
。关于java - 为什么java.util.Date的构造函数对int和long之间的参数的作用不同? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22060637/