You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OpenCSV解析CSV中的OffsetDateTime类型数据报错,寻求正确的日期格式表达式

解决OpenCSV解析OffsetDateTime的日期格式问题

针对你遇到的问题,正确的日期格式表达式是"yyyy-MM-dd'T'HH:mm:ssXX",修改你的注解配置即可:

@CsvDate(value = "yyyy-MM-dd'T'HH:mm:ssXX")
override var orderTimeStamp: OffsetDateTime? = null

为什么之前的格式不生效?

你尝试的"yyyy-MM-dd'T'HH:mm:ssZ"在Java原生DateTimeFormatter中确实能匹配+0100这种RFC 822时区格式,但OpenCSV在处理OffsetDateTime类型时,对Z模式的解析可能存在版本兼容问题。而XX模式明确对应无冒号的两位小时+分钟时区偏移(比如+0100),在OpenCSV对Java 8时间类型的支持中表现更稳定。

快速验证方案

你可以用Java原生API先确认格式的有效性,排除OpenCSV之外的问题:

String targetDate = "2021-05-09T12:23:55+0100";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXX");
OffsetDateTime parsedDateTime = OffsetDateTime.parse(targetDate, formatter);
System.out.println(parsedDateTime); // 输出:2021-05-09T12:23:55+01:00

这段代码能成功解析目标字符串,说明格式是完全匹配的。

额外注意点

  • 确保你使用的是OpenCSV 5.x及以上版本:旧版本(4.x及以下)原生不支持Java 8的OffsetDateTime、LocalDateTime等时间类型,需要自定义转换器才能处理。
  • 检查CSV文件中的日期字符串:如果存在隐藏的空格、换行符或特殊字符,也会触发解析异常,建议用文本编辑器打开CSV确认内容的规整性。

内容的提问来源于stack exchange,提问作者sigma1510

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 19:07:30