2017-07-19 78 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在问题评论中的帮助。