java将日期转换为毫秒,givse错误结果
我想把两个日期转换成毫秒,但是给出的结果是错误的,代码有什么问题吗?,如何解决它否则
GregorianCalendar c1 = new GregorianCalendar();
GregorianCalendar c2 = new GregorianCalendar();
c1.set(2013, 01, 31, 16, 44, 49);
c2.set(2013, 02, 01, 12, 59, 55);
System.out.println("c1 = "+c1.getTimeInMillis()+"\nc2 = "+ c2.getTimeInMillis());
output:
c1 = 1362300289619
c2 = 1362113995619
在计算时间之后,它给出以下结果:0Month -2Day -3Hour -44Min -54Sec
这是错误的。必须是这样的:0Month 0Day 20Hour 15Min 6Sec
c1比c2大,因为它给出了错误的结果,但为什么c1比c2大,在这种情况下,无法计算两个日期之间的时间。 如果有人知道,请帮助我,提前谢谢
# 1 楼答案
相反,您可以使用
java.util.Calendar
类上的常量,这将使代码更易于阅读# 2 楼答案
月份是以0为基础的,因此在您的示例中,c1是2月31日,被解释为3月3日(2月只有28天),c2是3月1日
# 3 楼答案
谢谢你们的回复! 现在问题解决了,只需从月份中减去1,在我不知道Java中月份从零开始之前。。。 这是如何解决的:
# 4 楼答案
此代码:
正在尝试设置二月31日,因为Java月份是基于0的。我猜你的结局是3月3日,也就是2月28日之后的3天。这显然是在3月1日之后,这就是你的
c2
的设置从^{} 的文件中:
每当您发现自己的代码行为异常时,总是检查您无法100%确定的任何API调用的详细信息
作为替代方案,我强烈建议您尽可能使用Joda Time——这是一个更加理智的API