我正在嘗試指定一個函數來將String表單中的日期解析為Date.String startDate = "14-08-2014";String endDate = "21/08/2020";String middleDate = "Sep 27, 2018";SimpleDateFormat sdf[] = new SimpleDateFormat[] {new SimpleDateFormat("dd/MM/yyyy"), new SimpleDateFormat("dd-MM-yyyy"), new SimpleDateFormat("MMM dd, yyyy") };Date date = null;for (DateFormat formatter : sdf) { try { date = formatter.parse(middleDate); break; } catch (ParseException e) {}System.out.println(date);它適用于除最后一種格式之外的兩種格式。如果它使用middleDate它完成Date等于null。誰能告訴我出了什么問題?
2 回答

qq_遁去的一_1
TA貢獻1725條經驗 獲得超8個贊
有一個使用java.time的解決方案,但仍然需要使用LOCALE.ENGLISH。我不知道有什么方法可以讓它在不使用 LOCALE 的情況下工作...
String input = "Mar 23, 1994";
try {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM dd, yyyy").withLocale(Locale.ENGLISH);
LocalDate date = LocalDate.parse(input, formatter);
System.out.printf("%s%n", date);
}
catch (DateTimeParseException exc) {
System.out.printf("%s is not parsable!%n", input);
throw exc; // Rethrow the exception.
}

慕仙森
TA貢獻1827條經驗 獲得超8個贊
您的解析器是正確的,您的月份應該是“設置”
"Set 27, 2018"
Jan Feb Mar Apr May Jun Jul Aug Set Oct Nov Dec
添加回答
舉報
0/150
提交
取消