【问题标题】:support for Calendar in SuperCSV支持 SuperCSV 中的日历
【发布时间】:2016-02-23 12:49:26
【问题描述】:

我有一个 RES,2016-02-23_18:01:27 格式的 CSV 文件,我想将这些值映射到具有 StringCalendar 类型属性的 bean。在编写单元处理器方法时,有一种方法可以将值解析为DateParseDate()。这会导致错误,因为解析器正在返回 Date 对象,而我的 bean 中有 Calendar 对象。

为了克服这个问题,我在我的 bean 中创建了一个重载的 setter 方法,如下所示:

public void setDate(Date date) {
    this.date = new GregorianCalendar();
    this.date.setTime(date);
}

这是我的CellParser 方法:

private static CellProcessor[] getProcessors() {
    final CellProcessor[] processors = new CellProcessor[] { 
         new StrRegEx("\\w{3}"), // string value check
         new ParseDate("yyyy-MM-dd_HH:mm:ss"), // date
    };
    return processors;
}

是否有任何原生支持。我查看了官方网站及其示例。无法找到与 Calendar 相关的参考资料。如果 SuperCSV 没有原生支持,这是解决此问题的最佳方法吗?

【问题讨论】:

    标签: java csv calendar supercsv


    【解决方案1】:

    最简单的方法是编写自己的custom cell processor

    例如,您可以在ParseDate 之后链接以下处理器,以将其转换为Calendar

    public class DateToCalendar extends CellProcessorAdaptor implements DateCellProcessor {
    
        public DateToCalendar() {
        }
    
        public DateToCalendar(final CellProcessor next) {
            super(next);
        }
    
        public Object execute(final Object value, final CsvContext context) {
            validateInputNotNull(value, context);
    
            if( !(value instanceof Date) ) {
                throw new SuperCsvCellProcessorException(Date.class, value, context, this);
            }
    
            Calendar result = Calendar.getInstance();
            result.setTime((Date) value);
    
            return next.execute(result, context);
        }
    }
    

    例如,

    final CellProcessor[] processors = new CellProcessor[] { 
             new StrRegEx("\\w{3}"), // string value check
             new ParseDate("yyyy-MM-dd_HH:mm:ss", new DateToCalendar()) // date
        };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多