问题是
FEB
这不是Java期望的月份缩写,而是
Feb
。因此,您需要不敏感地解析字符串大小写,这可以通过构建
DateTimeFormatter
使用构建器。以下是一个完整的示例:
import java.util.*;
import java.time.*;
import java.time.format.*;
public class Test {
public static void main (String[] args) throws Exception {
String inputDate = "18-FEB-24 10.02.33.578000000 AM";
// Build the parsing part in a case-insensitive manner.
DateTimeFormatter inputFormatter = new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.appendPattern("dd-MMM-yy hh.mm.ss.SSSSSSSSS a")
.toFormatter(Locale.ENGLISH);
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS");
LocalDateTime dateTime = LocalDateTime.parse(inputDate, inputFormatter);
String formattedDate = dateTime.format(outputFormatter);
System.out.println(formattedDate);
}
}