簡體   English   中英

joda.time.LocalDate 中 Date 中的方法 getTime() 的等價物是什么?

[英]What is the equivalent of getTime(), which is a method in Date, in joda.time.LocalDate?

我正在做一個簡單的計算來計算兩個日期之間的差異。 如果我使用的是Date class,我可以這樣做:

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 object 更改為臨時日期 object,如下所示:

 LocalDate date=new LocalDate();
    Date d=date.toDate();

但是 toDate() 方法不起作用。 即它說它不是可識別的方法。(因此編譯時錯誤)但據我所知它在文檔中

感謝您的寶貴時間,當然還有感恩節快樂。

Days.daysBetween()就是答案。

LocalDate now = new LocalDate();
LocalDate past = now.minusDays(300);
int days = Days.daysBetween(past,now).getDays();

如果您只是處理日期,切勿將 LocalDate 轉換為 Java 日期(兩個完全不同的野獸)。 Jodatime Localdate 是真正的“日歷日期”,即 {day,month,year} 的元組(連同公歷規范),與“物理時間”、秒、小時等無關。如果您需要進行日期算術運算,請堅持使用 Localdate,您永遠不必擔心如果您使用 java 日期進行日期算術運算時可能出現的愚蠢錯誤(時區、DST 等)。

嘗試這樣的事情:

      LocalDate date =  new LocalDate();

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

或者參考這篇文章

如何將 Joda LocalDate 轉換為 java.util.Date?

沒有找到 LocalDate 的任何等價物,因為它們不准確。 但是 LocalDateTime 有幾個等價物:

LocalDateTime localDateTime = LocalDateTime.now();
long longValue = ZonedDateTime.of(localDateTime, ZoneId.systemDefault()).toInstant().toEpochMilli();

或者

long longValue = localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();

或者

long longValue = localDateTime.toInstant(OffsetDateTime.now().getOffset()).toEpochMilli();

或者

long longValue = Timestamp.valueOf(localDateTime).getTime();

我測試了這個示例代碼以找出天數差異,您可以根據需要找到差異。

請參閱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);
private long diff(Calendar c1, Calendar c2) { 
  long d1 = c1.getTimeInMillis();
  long d2 = c2.getTimeInMillis();
  return ((d2 - d1) / (60*60*24*1000));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM