Javaで日時の文字列から24時間表記のyyyy/MM/dd HH:mm:ssへの変換につまったため備忘録。
NG1: Unsupported field: HourOfDay
String inputDateTime = "20230818 083000";
DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyyMMdd hhmmss");
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
LocalDate date1 = LocalDate.parse(inputDateTime, inputFormatter);
String result = date1.parse(outputFormatter);
NG2: Unsupported field: ClockHourOfAmPm
DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyyMMdd HHmmss");
→どちらもDateTimeFormatter.ofPatternがHHを変換できないため。
結論:LocalDateではなくLocalDateTimeを使いましょう。
OK
LocalDateTime date1 = LocalDateTime.parse(s, DateTimeFormatter.ofPattern("yyyyMMdd HHmmss"));
String result = date1.parse(outputFormatter);