Java中String转LocalDate问题:避免重复使用DateTimeFormatter
复用DateTimeFormatter解决日期字符串与LocalDate互转问题
直接把DateTimeFormatter定义为静态常量就能解决重复创建的问题——它是线程安全的不可变类,全局复用完全没问题:
1. 定义全局复用的Formatter
// 建议用yyyy(公历年份)而非YYYY(ISO周年),避免跨年周解析异常 private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("dd/MM/yyyy");
2. 字符串转LocalDate
String inputDate = "12/11/2022"; LocalDate localDate = LocalDate.parse(inputDate, DATE_FORMATTER);
3. 在if-else逻辑中使用LocalDate
示例逻辑:
if (localDate.isBefore(LocalDate.of(2023, 1, 1))) { // 处理2023年之前的日期 } else { // 处理2023年及之后的日期 }
4. LocalDate转回字符串
String outputDate = localDate.format(DATE_FORMATTER);
关键提醒
别用YYYY代替yyyy!YYYY代表的是ISO周年(基于周的年份),在跨年周的情况下,解析出的年份可能和实际公历年份不一致,绝大多数业务场景都应该用yyyy。
内容的提问来源于stack exchange,提问作者stan92
相关产品推荐
相关产品推荐

