【发布时间】:2014-01-16 13:06:44
【问题描述】:
所以,我必须计算两个日期之间的天数,但不考虑闰年的额外天数......
因此,例如,在 2012 年 1 月 1 日到 2013 年 1 月 1 日之间,结果应该是 365 而不是 366。
我遇到了Joda-Time 的解决方案:
int days = Days.daysBetween(new DateTime(start), new DateTime(end)).getDays();
但我不能使用那个库...只有 Java API。
使用日历我运气不佳:
Calendar startCal=new GregorianCalendar();
Calendar endCal=new GregorianCalendar();
startCal.setTime(start);
endCal.setTime(end);
endCal.add(Calendar.YEAR,-startCal.get(Calendar.YEAR));
endCal.add(Calendar.MONTH,-startCal.get(Calendar.MONTH));
endCal.add(Calendar.DATE,-startCal.get(Calendar.DATE));
int daysDifference=endCal.get(Calendar.DAY_OF_YEAR);
任何不涉及大量代码的想法?
【问题讨论】:
-
为什么要计算一个你知道是错误的值?
-
Days.daysBetween(new DateTime(start), new DateTime(end)).getDays();返回366,这是很好的结果:) -
计算 2 月 29 日在您的时间范围内出现的次数并减去它。
-
因为我必须 :) 解释的时间太长,但它是我正在使用的应用程序的一部分......
-
@diminuta 解释为什么使用与您考虑的方法不同的方法通常会产生更好的解决方案。就个人而言,您想做的事情似乎是错误的。