关于GregoriaCalendar:java中相同的输入但不同的输出
我想用毫秒在我的程序中设置一个新的日期,但它不起作用。有人能告诉我为什么它不起作用吗 日历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())关于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,那么它就不起作用
谢谢表达式
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;
谢谢,这是真的。有溢油!