3 回答
TA贡献1906条经验 获得超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 确实是线程安全的,因此每次调用都会多一个实例化。
聚苯乙烯
我添加.atZone(ZoneOffset.UTC)是因为报告的异常,以及@Flown 的解决方案:指定区域。由于Date不一定用于 UTC 日期,因此可能会使用另一个日期。
TA贡献1906条经验 获得超10个赞
使用 SimpleDateFormat 格式化日期。
注意,SDF不是 THREAD-SAFE,它可能并不重要,但请记住这一点。
例如:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
System.out.println((sdf.format(new Date())).toString());
TA贡献1852条经验 获得超7个赞
从性能的角度来看,我没有确切的数字,但我会使用Java 8 Time API来解决这个问题。在您的特殊情况下,我将使用以下语句:
LocalDate.now().format(DateTimeFormatter.ISO_DATE);
编辑: 对于这个解决方案是从java.util.Date
到java.time.LocalDate
需要的转换!
new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
添加回答
举报