java.text.ParseException: unparseable date: "11:00 PM, Sun 07 Oct 2018"



我已经尝试了下面的代码,但它不起作用。

请解释为什么它不起作用。

public static void main(String[] args) {
String ti = "11:30 PM, Sun 07 Oct 2018";
String sformat = "h:m a, E dd M yyyy";
String cformat = "hh:mm a";
String d = dateFormater(ti, cformat, sformat);
System.out.println(d);
}
public static String dateFormater(String dateFromJSON,
String expectedFormat, String oldFormat) {
SimpleDateFormat dateFormat = new SimpleDateFormat(oldFormat);
Date date = null;
String convertedDate = null;
try {
date = dateFormat.parse(dateFromJSON);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(expectedFormat);
convertedDate = simpleDateFormat.format(date);
} catch (Exception e) {
e.printStackTrace();
}
return convertedDate;
}

您的模式需要

  • MMM因为月份是短垃圾格式(M仅用于月份编号,MMMM用于长垃圾格式(

    String sformat = "h:m a, E dd MMM yyyy";
    

您应该考虑使用新的timeAPI:java.time因为它更易于使用并且不需要额外的强制性try/catch

public static String dateFormater(String dateFromJSON, String expectedFormat, String oldFormat) {
LocalDateTime date = LocalDateTime.parse(dateFromJSON, DateTimeFormatter.ofPattern(oldFormat, Locale.ENGLISH));
String newStr = date.format(DateTimeFormatter.ofPattern(expectedFormat, Locale.ENGLISH));
return newStr;
}

或在单行中:

public static String dateFormaterSh(String dateFromJSON, String expectedFormat, String oldFormat) {
return LocalDateTime.parse(dateFromJSON, DateTimeFormatter.ofPattern(oldFormat, Locale.ENGLISH))
.format(DateTimeFormatter.ofPattern(expectedFormat, Locale.ENGLISH));
}

您的日期格式不正确。请使用以下格式。

String sformat= "hh:mm a, EEE dd MMM yyyy";

最新更新