life = 91
today = System.currentTimeMillis()
expireDate = new Date(today + life * 24 * 3600 * 1000);
new Date(today)
按预期返回今天的日期Wed Nov 28 15:21:01 GMT+05:30 2012
为什么new Date(expireDate)
会在今天的日期之前返回Tue Nov 20 05:17:16 GMT+05:30 2012
,那时我真的希望提前约会?
答案 0 :(得分:6)
这是因为您今天添加的值是一个int,它实际上超出了Integer.MAX_VALUE
,当发生这种情况时,它从Integer.MIN_VALUE
开始。
要解决此问题,请将其中一个值声明为long
。例如,3600
可以是3600l
。
答案 1 :(得分:1)
尝试
int life = 91;
long today = System.currentTimeMillis();
Date expireDate = new Date(today + life * 24 * 3600 * 1000L);
System.out.println(expireDate);
打印
Wed Feb 27 10:03:32 GMT 2013
注意:我使用1000L
来防止溢出,因此会life
成为long
。