使用DateTimeFormatter解析字符串为LocalDateTime时出现解析异常
问题分析与解决方案
你的核心问题是DateTimeFormatter的格式字符串和输入的日期字符串格式完全不匹配。
输入的日期字符串是12/02/2024 13:45:00,格式是日/月/年 时:分:秒,但你用的yyyy-MM-dd HH:mm:ss是年-月-日 时:分:秒的格式,两者从分隔符到字段顺序都不一样,自然解析失败。之前尝试的yyyy-MM-dd'T'HH:mm:ss和ISO_LOCAL_DATE_TIME也都是对应年-月-日T时:分:秒这类格式,和你的输入完全不搭。
正确代码示例
把格式字符串改成和输入匹配的dd/MM/yyyy HH:mm:ss即可:
import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class MainAppointment { public static void main(String[] args) { String description = "12/02/2024 13:45:00"; // 格式字符串匹配输入的日/月/年 时:分:秒结构 DateTimeFormatter parser = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss"); LocalDateTime result = LocalDateTime.parse(description, parser); System.out.println(result); // 输出:2024-02-12T13:45 } }
额外说明
dd代表两位数字的日期,MM代表两位数字的月份,yyyy代表四位数字的年份,/是分隔符,和输入中的/对应- 如果不确定输入的月份/日期是否是两位(比如可能是
2/3/2024),可以用d/M/yyyy这种格式,它能兼容一位或两位的日/月
内容的提问来源于stack exchange,提问作者Tony Valderrama
相关产品推荐
相关产品推荐

