我有一个格式为RES,2016-02-23_18:01:27
的CSV文件,我希望将值映射到具有String
和Calendar
类型属性的bean。在编写单元处理器方法时,有一种方法可以将值解析为Date
ParseDate()
。这会导致错误,因为解析器返回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没有原生支持,这是解决这个问题的最佳方法吗?
答案 0 :(得分:2)
最简单的方法是编写自己的custom cell processor。
例如,您可以在if (p_sys->b_first_frame && b_gotpicture) {
if (AV_PICTURE_TYPE_I != frame->pict_type) {
av_frame_unref(frame);
break;
}
}
之后链接以下处理器,将其转换为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);
}
}