我有代码:
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
答案 0 :(得分:6)
您的乘法全部为int
s,并且溢出为负数,在减去时会产生将来的日期。
将1000
投射到long
或使用long
文字1000L
来使用更广泛的有效数字范围,并获得要减去的正确数字,并且&# 39;过去会得到一个约会。
答案 1 :(得分:2)
尝试使用日历:
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_YEAR, -390);