我正在嘗試撰寫一個代碼來告訴我還有多少天可以上大學,但我無法使用當前日期來完成。我可以通過設定日期輕松完成,但我想要當前日期,所以我必須使用日歷方法,但不能使用它進行數學運算。我的代碼:
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Calendar calendar = Calendar.getInstance();
Date start = sdf.parse("10/06/2022");
System.out.println(start - calendar.getTime());
uj5u.com熱心網友回復:
tl;博士
ChronoUnit.DAYS.between(
LocalDate.now( ZoneId.of( "Pacific/Auckland" ) ) ,
LocalDate.parse( "10/06/2022" , DateTimeFormatter.ofPattern( "dd/MM/uuuu" ) )
)
細節
您正在使用糟糕的日期時間類,這些類在幾年前被JSR 310 中定義的現代java.timeDate類所取代。永遠不要使用/ Calendar。
此外,您正在嘗試使用日期時間類來表示日期,如 UTC(零偏移量)中所見的時間日期來保存僅日期值。方釘,圓孔。
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu" ) ;
LocalDate graduationDate = LocalDate.parse( "10/06/2022" , f ) ;
確定今天的日期。這需要一個時區。對于任何給定的時刻,日期在全球范圍內因時區而異。
ZoneId z = ZoneId.of( "Asia/Tokyo" ) ; // Or ZoneId.systemDefault()
LocalDate today = LocalDate.now( z ) ;
使用 計算經過的時間java.time.temporal.ChronoUnit。
long days = ChronoUnit.DAYS.between( today , graduationDate ) ;
提示:了解將日期時間值作為文本交換的ISO 8601標準。
uj5u.com熱心網友回復:
Calendar calendar = Calendar.getInstance();
Calendar collegeDate = Calendar.getInstance();
collegeDate.set(Calendar.DATE,10);
collegeDate.set(Calendar.MONTH, 5);
collegeDate.set(Calendar.YEAR, 2022);
System.out.println(Duration.between(calendar.toInstant(), collegeDate.toInstant()).toDays());
uj5u.com熱心網友回復:
你可以試試這個
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Calendar calendar = Calendar.getInstance();
Date start = sdf.parse("10/06/2022");
long dif = Math.abs(calendar.getTimeInMillis() - start.getTime());
long result = TimeUnit.DAYS.convert(dif, TimeUnit.MILLISECONDS);
System.out.println(result);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/436508.html
