System.currentTimeMillis()的减法

时间:2018-03-27 07:15:24

标签: java

    long rt = System.currentTimeMillis()-(1000*60*60*24*30);

当我将上述变量rt转换为日期时,我无法在30天之前获得预期日期(即)。为什么呢?

1 个答案:

答案 0 :(得分:5)

1000*60*60*24*30导致int溢出,因为它大于Integer.MAX_VALUE。将其更改为1000L*60*60*24*30以改为使用long

例如:

long rt = System.currentTimeMillis()-(1000L*60*60*24*30);
System.out.println (new Date(rt));

为我打印:

Sun Feb 25 09:18:58 IST 2018