我想用毫秒来在我的程序中设置一个新日期,但它不起作用。有没有人可以告诉我它为什么不起作用?
日历r_1 =新GregorianCalendar(2011,0,1);
r_1.add(Calendar.DAY_OF_MONTH,2);
的System.out.println(r_1.getTime());
long date_1 = r_1.getTimeInMillis()+ 2 * 24 * 60 * 60 * 1000;
r_1.setTimeInMillis(startTime1);
的System.out.println(r_1.getTime());
它的工作原理非常正确,但是如果我把这一天从2改为25,那么它就会起作用。
----------输出正确,是2011/01/26 ----------
日历r_1 =新GregorianCalendar(2011,0,1);
r_1.add(Calendar.DAY_OF_MONTH,25);
的System.out.println(r_1.getTime());
-----------输出现在不正确,它是2010/12/07 ------
long date_1 = r_1.getTimeInMillis()+ 25 * 24 * 60 * 60 * 1000; //我有2到25的变化
r_1.setTimeInMillis(startTime1);
的System.out.println(r_1.getTime());
由于
答案 0 :(得分:3)
表达式25*24*60*60*1000
是一个整数,你已经溢出了整数的大小,创建了一个负数。
你的表达是2,160,000,000毫秒。 int可以容纳的最大值是2,147,483,647。
要解决此问题,您必须强制表达式为long,如下所示
25L*24*60*60*1000
答案 1 :(得分:0)
25*24*60*60*1000
太大而无法放入int
。
试试25L*24*60*60*1000
这是一个很长的常数。
答案 2 :(得分:0)
尝试类似的东西:
final long k = 25*24*60*60*1000L;
long date_1 = r_1.getTimeInMillis() + k;