【发布时间】:2018-05-22 20:38:10
【问题描述】:
我一直在使用以下代码来计算两个日期之间的差异,但我遇到了一个不寻常的错误:
如果我通过以下日期:
d1 = 2017 年 8 月 12 日 d2 = 2022 年 7 月 31 日
它返回:24055..
结果不应该是月数吗?
public static int CalcDateDiff( java.util.Date date1, java.util.Date date2) {
if(date1 == null || date2 ==null )
{
if(date2 == null)
{
Calendar d1 = Calendar.getInstance();
d1.setTime(date1);
final Calendar d2 = Calendar.getInstance();
int diff = (d2.get(Calendar.YEAR) - d1.get(Calendar.YEAR)) * 12 + d2.get(Calendar.MONTH) - d1.get(Calendar.MONTH);
return diff;
}
else
return -1;
}
else
{
Calendar d1 = Calendar.getInstance();
d1.setTime(date1);
final Calendar d2 = Calendar.getInstance();
d2.setTime(date2);
int diff = (d2.get(Calendar.YEAR) - d1.get(Calendar.YEAR)) * 12 + d2.get(Calendar.MONTH) - d1.get(Calendar.MONTH);
return diff;
}
}
提前致谢!
【问题讨论】:
-
请提供minimal reproducible example,并提供有关您所在时区的详细信息。这里可能会发生太多事情,无法在不查看更多详细信息的情况下为您提供帮助。跨度>
-
(例如,如果一个日期是公元 17 年,一个日期是公元 2022 年,你会大致得到这个答案。)
-
我运行它并得到 55 作为输出...ideone.com/j06to9 我认为我们需要查看更多代码,或者您进行更多调试。
-
我也得了 55。 - 年、月和日可能不是唯一的字段。如果打印 d1.getTimeInMillis() 和 d2.getTimeInMillis(),你会得到什么?
-
展示你是如何创建
date1和date2
标签: java date date-difference java.util.date java.util.calendar