Java日期月份差异
我有开始日期和结束日期。
我需要Java中这两个日期之间的月数。
例如
它有一个日期和一个2月的日期。
它应该返回2。
正如其余的人所说,如果有一个图书馆会在几个月内给你时间差异,并且你可以使用它,那么你也可以。
否则,如果y1
和m1
是第一个日期的年份和月份,并且y2
和m2
是第二个的年份和月份,则所需值为:
(y2 - y1) * 12 + (m2 - m1) + 1;
请注意,即使第二个日期在第一个日期之后,中期(m2 - m1)也可能为负,但没关系。
无论月份是在1月= 0还是1月= 1的情况下进行的,无论是年份是AD还是自1900年以来的年份,或者其他什么都没有关系,只要两个日期使用相同的基础。 因此,例如,不要混合AD和BC日期,因为没有第0年,因此BC从AD抵消了1。
如果以合适的形式提供给您,或者使用日历,您可以直接从日期获得y1
等。
除了使用乔达时间似乎是最喜欢的建议,我会提供以下代码片段:
public static final int getMonthsDifference(Date date1, Date date2) {
int m1 = date1.getYear() * 12 + date1.getMonth();
int m2 = date2.getYear() * 12 + date2.getMonth();
return m2 - m1 + 1;
}
编辑:自Java 8以来,有一种更加标准的计算相同差异的方法。 改为使用JSR-310 api查看我的替代答案。
我强烈建议这个Joda-Time。
请注意Nick Holt的评论如下。 夏令时改变。
链接地址: http://www.djcxy.com/p/60613.html上一篇: Java Date month difference
下一篇: Win2008 R2 WER ( error reporting ) LocalDumps blocked by what?