System.currentTimeMillis()的减法

Exo*_*dus 3 java

    long rt = System.currentTimeMillis()-(1000*60*60*24*30);
Run Code Online (Sandbox Code Playgroud)

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

Era*_*ran 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));
Run Code Online (Sandbox Code Playgroud)

打印给我:

Sun Feb 25 09:18:58 IST 2018
Run Code Online (Sandbox Code Playgroud)