我有一个包含日期的字符串,格式如下:
dd-mm-yyyy
月份全部小写。例如: 25-AUG-2019 现在我尝试使用SimpleDateFormat将我的字符串转换为Date,但我有以下异常:
java.text.ParseException: Unparseable date: "25-aug-2019"
at java.text.DateFormat.parse(Unknown Source)
at org.whoislibrary.servers.WhoisCom.parseResponse(WhoisCom.java:37)
at org.whoislibrary.WhoisAbstract.executeQuery(WhoisAbstract.java:44)
at org.whoislibrary.WhoisCommand.executeQuery(WhoisCommand.java:69)
at org.whoislibrary.WhoisMain.main(WhoisMain.java:10)
这是我使用的代码:
DateFormat df = new SimpleDateFormat("dd-MM-yyyy");
try {
Date expDate = df.parse(dateString).trim());
System.out.println(expDate.toString());
} catch (ParseException e) {
e.printStackTrace();
}
我认为问题在于MM指的是以大写字母开头的月份名称(8月,7月等)。有一个选项,或类似SimpleDateFormat的类,可以帮助我将该字符串转换为Date。还是必须手动完成?
答案 0 :(得分:4)
你的代码很好:
new SimpleDateFormat("dd-MM-yyyy")
应该是:
new SimpleDateFormat("dd-MMM-yyyy")
由于字符串中的月份部分有3个字母(MMM)而不是2(MM)
答案 1 :(得分:3)
使用dd-MMM-yyyy
答案 2 :(得分:1)
您的日期“25-aug-2019”格式为"dd-MMM-yyyy"
,而非"dd-MM-yyyy"
。所以你得到解析错误。您应该在创建SimpleDateFormat对象时使用"dd-MMM-yyyy"
。
答案 3 :(得分:0)
DateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
try {
Date expDate = df.parse("25-aug-2019");
System.out.println(expDate.toString());
} catch (ParseException e) {
e.printStackTrace();
}
答案 4 :(得分:0)
参考javaDocs java.text.SimpleDateFormat