在 Java 中,有没有办法找到两个日期之间的天数,因为其中一个或两个日期可能在 1970 年之前(即不能使用 Date 对象)?
问问题
4958 次
4 回答
6
我强烈推荐Joda Time图书馆。例子:
Days.daysBetween(startDate.toDateMidnight() , endDate.toDateMidnight() ).getDays()
于 2012-09-15T22:52:23.443 回答
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
于 2012-09-15T22:56:38.047 回答
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;
于 2012-09-15T23:09:29.290 回答
2
小心根据这样的时间戳计算天数:
(to.getTime() - from.getTime()) / (1000L * 60 * 60 * 24)
无论使用 Date 还是 GregorianCalender。
如果 3 月的最后一个星期日在此时间间隔内,这在欧洲不起作用。
In Europe time is switched two times a year for one hour. - Winter time ==> Summer time (last Sunday in March) - Summer time ==> Winter time (last Sunday in October)
So the last Sunday in March has only 23 hours. In consequnce calculation returns one day less.
于 2017-01-29T10:12:00.250 回答