2012-01-18 57 views
2

我有一個包含日期的字符串,格式如下:字符串與年月日全部小寫在java中

dd-mm-yyyy 

與被全部小寫的月份。例如: 25-AUG-2019 現在我試圖用SimpleDateFormat的我的字符串轉換爲日期,但我有以下異常:

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是指以大寫字母(Aug,Jul等)開頭的月份名稱。有一個選項或像SimpleDateFormat這樣的類可以幫助我將該字符串轉換爲Date。或者它必須手動完成?

+0

由於你的格式,你的日期與'25-aug-2019'類似,但應該是'25-08-2019' – 2012-01-18 09:16:37

+0

我想說他的格式是dd-MM-yyyy,但應該是dd-MMM-yyyy由於他的要求:) – 2012-01-18 09:20:26

+1

僅供參考,月份名稱是大寫還是小寫取決於區域設置,而不是解析模式。有些語言和文化使用大寫字母(美國英語),有些則不使用法語。 – 2015-03-20 06:10:36

回答

4

那麼在你的代碼中有:

new SimpleDateFormat("dd-MM-yyyy") 

這應該是:

new SimpleDateFormat("dd-MMM-yyyy") 

由於您的字符串月份部分有3個英文字母( MMM)而不是2(MM)

3

使用dd-MMM-yyyy

1
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(); 
    }  
1

您的日期 「25-AUG-2019」 是"dd-MMM-yyyy"格式不"dd-MM-yyyy"。所以你得到解析錯誤。在創建SimpleDateFormat對象時,您應該使用"dd-MMM-yyyy"

相關問題