3 回答

TA貢獻1906條經(jīng)驗 獲得超3個贊
以下僅具有將舊 Date 轉換為新 LocalDate 的開銷。
Date date = new Date();
LocalDate ldate = LocalDate.from(date.toInstant().atZone(ZoneOffset.UTC));
String s = DateTimeFormatter.ISO_DATE.format(ldate); // uuuu-MM-dd
然而,DateTimeFormatters 確實是線程安全的,因此每次調(diào)用都會多一個實例化。
聚苯乙烯
我添加.atZone(ZoneOffset.UTC)是因為報告的異常,以及@Flown 的解決方案:指定區(qū)域。由于Date不一定用于 UTC 日期,因此可能會使用另一個日期。

TA貢獻1906條經(jīng)驗 獲得超10個贊
使用 SimpleDateFormat 格式化日期。
注意,SDF不是 THREAD-SAFE,它可能并不重要,但請記住這一點。
例如:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
System.out.println((sdf.format(new Date())).toString());

TA貢獻1852條經(jīng)驗 獲得超7個贊
從性能的角度來看,我沒有確切的數(shù)字,但我會使用Java 8 Time API來解決這個問題。在您的特殊情況下,我將使用以下語句:
LocalDate.now().format(DateTimeFormatter.ISO_DATE);
編輯: 對于這個解決方案是從java.util.Date
到java.time.LocalDate
需要的轉換!
new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
添加回答
舉報