2016-02-27 50 views
0

我试图从CSV分析日期如下:如何使用SuperCSV正确解析Joda DateTime?

2016-03-01 

要将乔达日期时间与SuperCSV推土机,像这样:

private static final String[] FIELD_MAPPING = new String[] {"date"}; 

final CellProcessor[] processors = new CellProcessor[] { 
    new ParseDateTime(DateTimeFormat.forPattern("YYYY-MM-DD")) 
}; 

CsvDozerBeanReader beanReader = new CsvDozerBeanReader(
    new FileReader("/path/to.csv"), CsvPreference.STANDARD_PREFERENCE); 
beanReader.configureBeanMapping(MyDateHoldingBean.class, FIELD_MAPPING); 
MyDateHoldingBean bean = beanReader.read(EmployeeDetails.class, processors) 

日期时间返回当前日期&时间, 不代表从CSV中读取的日期。

我做错了吗?

+0

'Y'是不一样'y' - 你应该使用'yyyy-MM-DD'作为日期格式 –

回答

0

您错过了一个步骤;您需要配置Dozer映射。目前,这个必须有DozerBeanMapper来完成:

final CellProcessor[] processors = new CellProcessor[] { 
    new ParseDateTime(DateTimeFormat.forPattern("yyyy-MM-dd")) 
}; 

DozerBeanMapper mapper = new DozerBeanMapper(); 
mapper.addMapping(new FileInputStream("/path/to/dozer.xml")); 

CsvDozerBeanReader beanReader = new CsvDozerBeanReader(new FileReader("/path/to.csv"), 
    CsvPreference.STANDARD_PREFERENCE, mapper); 
MyDateHoldingBean bean = beanReader.read(MyDateHoldingBean.class, processors) 

其中dozer.xml样子:

<?xml version="1.0" encoding="UTF-8"?> 
<mappings xmlns="http://dozer.sourceforge.net" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://dozer.sourceforge.net 
     http://dozer.sourceforge.net/schema/beanmapping.xsd"> 

    <mapping> 
     <class-a>org.supercsv.io.dozer.CsvDozerBeanData</class-a> 
     <class-b>your.package.MyDateHoldingBean</class-b> 
     <field copy-by-reference="true"> 
      <a>columns[0]</a> 
      <b>date</b> 
     </field> 
    </mapping> 
</mappings> 

看到这个question