繁体   English   中英

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

[英]Find the difference between two dates in Java

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

我强烈推荐Joda Time库。 例:

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

?? 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

您也可以尝试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;

请谨慎地根据时间戳计算天数,如下所示:

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

无论使用Date还是GregorianCalender。

如果三月的最后一个星期日在此时间间隔内,则在欧洲不起作用。

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

因此,三月的最后一个星期日只有23小时。 因此,计算结果将减少一天的时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM