用Java解析日期Month day,year

时间:2018-10-11 13:33:21

标签: java datetime

我正在尝试指定一种将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 个答案:

答案 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