使用 OpenCsv 解析 Instant

Parsing Instant using OpenCsv

我正在尝试以这种方式使用 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。它应该是 HH 24 小时时间 (0-23) i.o。 hh 12 小时时间 (1-12)。该错误是由小时“00”引起的。还好,不然就只有上半天了

参见 h、k、H 和 K。

class Instant 不使用秒之类的单位,内部比较长。使用 LocalDateTime 作为您的格式。