【问题标题】:How to correctly parse Joda DateTime with SuperCSV?如何使用 SuperCSV 正确解析 Joda DateTime?
【发布时间】:2016-02-27 03:05:59
【问题描述】:

我正在尝试从 CSV 解析日期,如下所示:

2016-03-01

使用 SuperCSV Dozer 的 Joda DateTime,如下所示:

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)

返回的 DateTime 是当前日期和时间,不是从 CSV 读取的日期的表示

我做错了吗?

【问题讨论】:

  • Yy 不同 - 您应该使用 yyyy-MM-DD 作为日期格式

标签: supercsv


【解决方案1】:

你少了一步;您需要配置推土机映射。目前这必须使用 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

【讨论】:

    猜你喜欢
    • 2011-09-17
    • 1970-01-01
    • 2018-04-07
    • 2014-06-03
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    相关资源
    最近更新 更多