代码如下:
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss a");
LocalDateTime dateTime = LocalDateTime.parse("2023-09-07 11:44:45 PM", dateTimeFormatter);
System.out.println(dateTime);
新建了一个12小时的时间格式化器,但是转换时一直报错,提示这个字符串的第20位无法解析.
解决方案
①将字符串的PM改成中文的"上午"或"下午"
LocalDateTime dateTime = LocalDateTime.parse("2023-09-07 20:44:45 下午", dateTimeFormatter);
②或者使用ofPattern(String pattern,Locale locale),并指定locale为Locale.US
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss a", Locale.US);
另外需要注意的是AM(上午)的小时位应符合0-11,PM(下午)小时位应符合12-23.