我正在尝试指定一个函数来将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条经验 获得超7个赞
有一个使用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条经验 获得超7个赞
您的解析器是正确的,您的月份应该是“设置”
"Set 27, 2018"
Jan Feb Mar Apr May Jun Jul Aug Set Oct Nov Dec
添加回答
举报
0/150
提交
取消