2017-07-19 116 views
0

我正在使用以下片段以從字符串中獲取日期。無法使用FastDateFormat從字符串解析日期

//class org.apache.commons.lang3.time.FastDateFormat 
FastDateFormat fdf = FastDateFormat.getInstance("yyyyww"); 
Object ob = fdf.parseObject("201701", new ParsePosition(1)); 
java.util.Date d = (java.util.Date) ob; 
System.out.println(d); 

另外通過調用的parseObject(String)方法的使用來完成。但是通過調查API代碼,我發現它創建了PArsePosition對象,同時在其構造函數中傳遞了0,該構造函數已在代碼中處理以引發異常。

//class org.apache.commons.lang3.time.FastDateFormat 
FastDateFormat fdf = FastDateFormat.getInstance("yyyyww"); 
Object ob = fdf.parseObject("201701", new ParsePosition(1)); 
java.util.Date d = (java.util.Date) ob; 
System.out.println(d); 

的下面文檔中提到了存在parse()方法,但沒有可用的。

FastDateFormat documentation

利用的parseObject()的賦予如上所述的結果。

API中的parseObject()方法如下,總是返回null。

definition of parseObject(String,ParsePosition) in API

請上另一種方法或一些穩定的版本建議。

+0

'201701'是什麼?如果是年份和月份,你的模式是錯誤的(應該是'yyyyMM'而不是'yyyyww'):https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html – 2017-07-19 13:02:26

+0

如果'parse'方法不可用,也許你沒有使用文檔所指的相同版本。 – 2017-07-19 13:03:59

+0

@Hugo格式是年和周。好的,看看更多的版本(這個是2.6)。 –

回答

0

升級版本問題得到解決。

我們實際上使用Maven來獲取依賴關係。它存在以下:

<dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-lang3</artifactId> 
     <version>3.3</version> 
    </dependency> 

而早前我努力做到這一點的:

<dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-lang</artifactId> 
     <version>3.6</version> 
    </dependency> 

這是一個版本的問題,也許更大的問題,同時使用Maven。

謝謝@Hugo在問題評論中的幫助。