[英]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.