我正在尝试通过这种方式使用 OpenCsv 从 CSV 解析 Instant:
@CsvDate("yyyy-MM-dd hh:mm:ss")
@CsvBindByName(column = "date")
private Instant date;
我知道 OpenCsv 应该支持 java.time
。
但是当尝试使用它时,我收到以下异常:
Error parsing CSV line: 8.
...
Caused by: java.time.format.DateTimeParseException: Text '2022-04-21 00:00:00' could not be parsed: Unable to obtain Instant from TemporalAccessor: {HourOfAmPm=0, MicroOfSecond=0, NanoOfSecond=0, MilliOfSecond=0, MinuteOfHour=0, SecondOfMinute=0},ISO resolved to 2022-04-21 of type java.time.format.Parsed
...
Caused by: java.time.DateTimeException: Unable to obtain Instant from TemporalAccessor: {HourOfAmPm=0, MicroOfSecond=0, NanoOfSecond=0, MilliOfSecond=0, MinuteOfHour=0, SecondOfMinute=0},ISO resolved to 2022-04-21 of type java.time.format.Parsed
...
Caused by: java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: InstantSeconds
根据我的调查,根本原因是缺少时区,但我的问题是如何仅使用注释指定时区?
最佳答案
参见DateTimeFormatter 。表示 24 小时时间 (0-23) 的时间应为 HH
。 hh
表示 12 小时时间 (1-12)。该错误是由“00”小时引起的。幸运的是,否则你就只有前半天了。
参见 h、k、H 和 K。
类Instant
不使用秒之类的单位,内部更长时间。使用 LocalDateTime
作为您的格式。
关于java - 使用 OpenCsv 解析 Instant,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71771439/