1 回答

TA貢獻1773條經(jīng)驗 獲得超3個贊
首先,該方法針對給定日期值返回的值分別是113and 114, not-119和-120。
假設(shè)您想要根據(jù)當(dāng)前(默認(rèn))時區(qū)的日期差異,您可以通過調(diào)用then將Instant值轉(zhuǎn)換為。LocalDateatZonetoLocalDate
public static long daysBetweenDatesWithSign(Date d1, Date d2) {
return daysBetweenDatesWithSign(d1, d2, ZoneId.systemDefault());
}
public static long daysBetweenDatesWithSign(Date d1, Date d2, ZoneId zone) {
LocalDate instant1 = d1.toInstant().atZone(zone).toLocalDate();
LocalDate instant2 = d2.toInstant().atZone(zone).toLocalDate();
return ChronoUnit.DAYS.between(instant1, instant2);
}
測試
public static void main(String[] args) throws ParseException {
test("Nov.11,2018 11:00am", "Mar.5,2019 10:00am");
test("Nov.11,2018 11:00am", "Mar.5,2019 3:00pm");
}
public static void test(String d1, String d2) throws ParseException {
SimpleDateFormat fmt = new SimpleDateFormat("MMM.d,yyyy hh:mma");
System.out.println("[" + d1 + "] , [" + d2 + "] = " +
daysBetweenDatesWithSign(fmt.parse(d1), fmt.parse(d2)));
}
輸出
[Nov.11,2018 11:00am] , [Mar.5,2019 10:00am] = 114
[Nov.11,2018 11:00am] , [Mar.5,2019 3:00pm] = 114
添加回答
舉報