我已经对此做了一些阅读,并try 完成其他StackOverflow线程中的示例,但如果我试图指定可选部分,则在解析日期/时间时总是遇到异常.
这是输入.可选部分是AM/PM和时区,AM/PM可能不总是在输入中,时区可能是4个字符:
09:10:05.584 AM EST Wed Nov 29 2023
这是适用于此输入的模式,但不适用于其他输入,例如如果没有时区
hh:mm:ss.SSS a zzz E MMM dd yyyy
如果我try 这样做并创建可选模式,我会在输入中的位置12处获得一个解析异常,该位置正好在毫秒之后
hh:mm:ss.SSS[ a [z]zzz ]E MMM dd yyyy
以下是代码,当前设置为失败的格式:
public static final String TIME_FORMAT = "hh:mm:ss.SSS[ a [z]zzz ]E MMM dd yyyy";
public static String ParseDate(String input, String format) {
String retVal = "";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format, Locale.ENGLISH);
TemporalAccessor ta = formatter.parseBest(input, LocalDateTime::from, LocalDate::from);
retVal = ta.toString();
System.out.println("Parsed date is: "+ retVal);
return retVal;
}