猿问

在java中解析日期月日,年

我正在尝试指定一个函数来将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。谁能告诉我出了什么问题?


蛊毒传说
浏览 133回答 2
2回答

qq_遁去的一_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.    }

慕仙森

您的解析器是正确的,您的月份应该是“设置”"Set 27, 2018"Jan Feb Mar Apr May Jun Jul Aug Set Oct Nov Dec
随时随地看视频慕课网APP

相关分类

Java
我要回答