2016-02-27 49 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