我正在尝试指定一种将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
结尾。有人可以告诉我哪里出了问题吗?
答案 0 :(得分:1)
有一个使用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.
}
答案 1 :(得分:-2)
您的解析器是正确的 您的月份应为“设置”
"Set 27, 2018"
Jan Feb Mar Apr May Jun Jul Aug Set Oct Nov Dec