过去的日期会导致将来的日期

时间:2015-08-13 17:30:51

标签: java

我有代码:

java.util.Date purgeBackDate = new java.util.Date(System.currentTimeMillis() - (1000 * 60 * 60 * 24 * 390));
System.out.println(purgeBackDate);

我原本打算在390天前打印日期,而是打印一个未来的日期:Fri Aug 21 05:57:11 EDT 2015

我还尝试将System.currentTimeMillis()替换为new java.util.Date().getTime(),我得到了相同的结果。我很困惑,因为之前以前工作的减去了。

我正在使用JDK 1.6和1.7(都给出了这个结果):Test Code

2 个答案:

答案 0 :(得分:6)

您的乘法全部为int s,并且溢出为负数,在减去时会产生将来的日期。

1000投射到long或使用long文字1000L来使用更广泛的有效数字范围,并获得要减去的正确数字,并且&# 39;过去会得到一个约会。

答案 1 :(得分:2)

尝试使用日历:

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_YEAR, -390);