我正在做一个简单的计算,以获得两个日期之间的差异。如果我使用的是Date
课,我可以这样做:
Date d1 = new GregorianCalendar(2000, 11, 31, 23, 59).getTime();
/** Today's date */
Date today = new Date();
// Get msec from each, and subtract.
long diff = today.getTime() - d1.getTime();
System.out.println("The 21st century (up to " + today + ") is "
+ (diff / (1000 * 60 * 60 * 24)) + " days old.");
}
但是我找不到像本地日期那样的getTime()方法。有什么办法可以轻松搞定我想要达到的目标吗?
我甚至尝试将我的LocalDate对象更改为临时日期对象,如下所示:
LocalDate date=new LocalDate();
Date d=date.toDate();
但是方法toDate()不起作用。即它说它不是公认的方法。(所以编译时错误)但是我可以看到它在文档中
感谢您的时间,感恩节快乐。
答案 0 :(得分:1)
尝试这样的事情:
LocalDate date = new LocalDate();
Date utilDate = date.toDateTimeAtStartOfDay( timeZone ).toDate( );
或参考这篇文章
答案 1 :(得分:1)
Days.daysBetween()就是答案。
LocalDate now = new LocalDate();
LocalDate past = now.minusDays(300);
int days = Days.daysBetween(past,now).getDays();
从不将LocalDate转换为Java日期(两个完全不同的野兽),如果您只是处理日期。 Jodatime Localdate是一个真正的“日历日期”,即{天,月,年}的元组(连同公历规格),与“物理时间”无关,具有秒,小时等。如果你需要做日期算术,坚持使用Localdate,你永远不需要担心愚蠢的错误(时区,DST等),如果你使用Java日期计算日期,可能会出现这些错误。
答案 2 :(得分:0)
我测试了这个示例代码以找出天数的差异,您可以根据需要找到差异。
请参阅http://joda-time.sourceforge.net/key_period.html
LocalDate currentDate = new LocalDate();
LocalDate previousDate = currentDate.minusDays(1);
System.out.println(currentDate);
System.out.println(previousDate);
Period periodDifference = new Period(currentDate, previousDate, PeriodType.days());
System.out.println(periodDifference);
答案 3 :(得分:0)
private long diff(Calendar c1, Calendar c2) {
long d1 = c1.getTimeInMillis();
long d2 = c2.getTimeInMillis();
return ((d2 - d1) / (60*60*24*1000));
}