找出Java中两个日期之间的差异

时间:2012-09-15 22:49:27

标签: java

在Java中,有没有办法找到两个日期之间的天数,因为一个或两个日期可能在1970年之前(即不能使用Date对象)?

4 个答案:

答案 0 :(得分:6)

我强烈推荐Joda Time库。例如:

Days.daysBetween(startDate.toDateMidnight() , endDate.toDateMidnight() ).getDays()

答案 1 :(得分:4)

咦? Date可用于表示早于1970年的日期。只需将负数传递给其构造函数。

System.out.println(new Date(-1000));
System.out.println(new Date("Jul 4 1776"));  // note: deprecated API.  Just an easy example

打印

Wed Dec 31 15:59:59 PST 1969
Thu Jul 04 00:00:00 PST 1776

答案 2 :(得分:2)

你也可以试试GregorianCalendar。 请注意,月份为0,而天数为1

import java.util.GregorianCalendar;

//january, 1st, 2012
GregorianCalendar c1 = new GregorianCalendar(2012, 0, 1);
//march, 3rd, 1912
GregorianCalendar c2 = new GregorianCalendar(1912, 2, 3);
long differenceInSeconds = (c1.getTimeInMillis() - c2.getTimeInMillis()) / 1000;

答案 3 :(得分:1)

小心根据时间戳计算天数:

(to.getTime() - from.getTime())/(1000L * 60 * 60 * 24)

无论使用Date还是GregorianCalender。

如果3月的最后一个星期天在这段时间内,这在欧洲不起作用。

在欧洲,时间每年切换两次,持续一小时。   - 冬令时==>夏令时(三月的最后一个星期天)   - 夏令时==>冬季时间(10月的最后一个星期天)

所以三月的最后一个星期天只有23个小时。在一定程度上,计算会减少一天。