java.time.temporal.UnsupportedTemporalTypeException:不支持的字段:O



我正在使用以下函数接口来制作一个通用的自定义日期格式转换器。

@FunctionalInterface
public interface CustomDateFormatterInterface {
String convertStringToDate();
}

该功能接口的实现如下

CustomDateFormatterInterface customDateFormatterInterface = () -> {
LocalDateTime localDateTime = LocalDateTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ")
.withLocale(Locale.getDefault())
.withZone(ZoneId.systemDefault());
Instant now = Instant.now();
String formatted = dateTimeFormatter.format(localDateTime);
LocalDateTime parsed = dateTimeFormatter.parse(formatted, LocalDateTime::from);
return parsed.toString();
};

我想获得以下日期格式CCD_ 1。但我遇到了一个例外。如果我尝试使用nowInstant,我会得到的输出

2020-12-29T15:44:34Z

我该怎么办?有人能告诉我哪里出了问题吗?如果需要,请告诉我其他事情。

使用具有时区偏移量的OffsetDateTime并将其截断为秒

ISO-8601日历系统中与UTC/Greenwich有偏移的日期时间,例如2007-12-03T10:15:30+01:00。

OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneId.of("Europe/Paris"));
offsetDateTime.truncatedTo(ChronoUnit.SECONDS).format(DateTimeFormatter.ISO_OFFSET_DATE_TIME); //2020-12-29T18:28:44+01:00

如果您想要自定义格式,请使用DateTimeFormatterBuilder 构建

OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
DateTimeFormatter dateTimeFormatter = new DateTimeFormatterBuilder()
.append(DateTimeFormatter.ISO_LOCAL_DATE_TIME)
.appendOffset("+HHMM", "+0000")
.toFormatter();
offsetDateTime.truncatedTo(ChronoUnit.SECONDS).format(dateTimeFormatter); //2020-12-29T17:36:51+0000

相关内容

  • 没有找到相关文章

最新更新