[英]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( );
或者參考這篇文章
沒有找到 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.