添加两个多头会带来较低的结果

Add two longs brings a lower result

我想在我的开始日基础上增加 35 天。我得到的结果低于开始日的结果。

这是代码:

DatePickerDialog dpd = new DatePickerDialog(this, dpickerListener, g_year, g_month, g_day);
DatePicker dp = dpd.getDatePicker();
System.out.println("g_DateCycle.getTime()" + g_DateCycle.getTime());
dp.setMinDate(g_DateCycle.getTime());
long FinCycle=g_DateCycle.getTime();
System.out.println("FinCycle : " + FinCycle);
FinCycle= FinCycle +(g_GridDayNumber*(24*60*60*1000));
System.out.println("FinCycle : " + FinCycle);
dp.setMaxDate(FinCycle);
return dpd;

我收到一个错误:

java.lang.IllegalArgumentException: fromDate: Sun Jan 31 00:00:00 CET 2016 does not precede toDate: Sat Jan 16 06:57:12 CET 2016

和以下输出:

02-03 16:52:16.724 20157-20157/com.inverseo.marc.t372lematin I/System.out: g_DateCycle.getTime()1454194800000
02-03 16:52:16.724 20157-20157/com.inverseo.marc.t372lematin I/System.out: FinCycle : 1454194800000
02-03 16:52:16.724 20157-20157/com.inverseo.marc.t372lematin I/System.out: FinCycle : 1452923832704

我不明白为什么在 g_GridDayNumber*(24*60*60*1000)g_GridDayNumber=35 相加时,我可以得到一个较低的多头!

感谢您的帮助

35*(24*60*60*1000) = 3,024,000,000 大于 Java 中整数允许的最大值,变成 -1,270,967,296 的补码。

将其中一个指定为 long,它应该可以工作。请注意下面数字 24 之后的 L 指定长:

35*(24L*60*60*1000)