关于GregoriaCalendar:java中相同的输入但不同的输出

关于GregoriaCalendar:java中相同的输入但不同的输出,java,gregorian-calendar,Java,Gregorian Calendar,我想用毫秒在我的程序中设置一个新的日期,但它不起作用。有人能告诉我为什么它不起作用吗 日历r_1=新的格里高利安日历(2011,0,1) r_1.添加(日历。月的第2天) System.out.println(r_1.getTime()) 长日期=r_1.getTimeInMillis()+2*24*60*60*1000 r_1.设置时间单位为毫秒(开始时间1) System.out.println(r_1.getTime()) 这两种方法都非常正确,但如果我将日期从2改为25,那么它就不起作用

我想用毫秒在我的程序中设置一个新的日期,但它不起作用。有人能告诉我为什么它不起作用吗

日历r_1=新的格里高利安日历(2011,0,1)

r_1.添加(日历。月的第2天)

System.out.println(r_1.getTime())

长日期=r_1.getTimeInMillis()+2*24*60*60*1000

r_1.设置时间单位为毫秒(开始时间1)

System.out.println(r_1.getTime())

这两种方法都非常正确,但如果我将日期从2改为25,那么它就不起作用了

----------输出是正确的,它是2011/01/26----------

日历r_1=新的格里高利安日历(2011,0,1)

r_1.添加(日历,每月的第25天)

System.out.println(r_1.getTime())

-----------现在输出不正确,它是2010/12/07------

长日期=r_1.getTimeInMillis()+25*24*60*60*1000//我有2到25的零钱

r_1.设置时间单位为毫秒(开始时间1)

System.out.println(r_1.getTime())


谢谢

表达式
25*24*60*60*1000
是一个整数,您溢出了整数的大小,产生了一个负数

您的表达式是216000000毫秒。一个int可以保存的最大值是2147483647

要解决此问题,必须强制表达式为long,如下所示

25L*24*60*60*1000

25*24*60*60*1000
太大,无法装入
int
中。
尝试
25L*24*60*60*1000
这是一个长常量。

尝试类似的方法:

final long k = 25*24*60*60*1000L;
long date_1 = r_1.getTimeInMillis() + k;

谢谢,这是真的。有溢油!