我正在使用openCSV的CsvToBean类。豆有日期字段。
@CsvDate(value = "yyyy-MM-dd")
@CsvBindByPosition(position = 8)
private Date startDate;
Run Code Online (Sandbox Code Playgroud)
我正在通过传递值“ 2018-25-02 ” 进行负面测试,但它将转换为格林尼治标准时间2020年1月2日星期四00:00:00而不引发任何问题。
sxc*_*731 11
OpenCSV 5.x 以上本机支持 Java 8 java.time API。
引用文档:
包括对 Java 8 Time API 的完全支持。
TemporalAccessor
包括与实现的所有 JDK 类型之间的转换。
因此,以下内容就足够了:
@CsvDate(value = "yyyy-MM-dd")
@CsvBindByPosition(position = 8)
private LocalDate startDate;
Run Code Online (Sandbox Code Playgroud)
您可以为Java 8 LocalDate创建自己的自定义转换器,例如
public class LocalDateConverter extends AbstractBeanField {
@Override
protected Object convert(String s) throws CsvDataTypeMismatchException, CsvConstraintViolationException {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate parse = LocalDate.parse(s, formatter);
return parse;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以像这样注释您的班级:
@CsvCustomBindByPosition(position = 8, converter = LocalDateConverter.class)
private LocalDate startDate;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2321 次 |
最近记录: |