在joda.time.LocalDate中,getTime()是Date中的一个方法,相当于什么?

时间:2011-11-22 21:14:13

标签: java datetime date jodatime

我正在做一个简单的计算,以获得两个日期之间的差异。如果我使用的是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()不起作用。即它说它不是公认的方法。(所以编译时错误)但是我可以看到它在文档中

感谢您的时间,感恩节快乐。

4 个答案:

答案 0 :(得分:1)

尝试这样的事情:

      LocalDate date =  new LocalDate();

       Date utilDate = date.toDateTimeAtStartOfDay( timeZone ).toDate( );

或参考这篇文章

How to convert Joda LocalDate to java.util.Date?

答案 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));
}