无法使用FastDateFormat从String解析日期

时间:2017-07-19 10:49:53

标签: java date

我使用以下代码段从String获取Date。

//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

请告知替代方法或某些稳定版本。

2 个答案:

答案 0 :(得分: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在问题评论中提供的帮助。

答案 1 :(得分:0)

在棒棒糖之前的设备KK 4.4.4上也解决了此错误。 使用SimpleDateFormat。

示例:

SimpleDateFormat ISO8601DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.GERMANY);
                String date = dateString.replaceAll("\\+0([0-9]){1}\\:00", "+0$100");
                return ISO8601DATEFORMAT.parse(date);