Date java.time.temporal.UnsupportedTemporalTypeException:不支持的字段:OffsetSeconds
我正在使用以下功能接口制作一个通用的自定义日期格式转换器Date java.time.temporal.UnsupportedTemporalTypeException:不支持的字段:OffsetSeconds,date,exception,java-8,instant,localdatetime,Date,Exception,Java 8,Instant,Localdatetime,我正在使用以下功能接口制作一个通用的自定义日期格式转换器 @FunctionalInterface public interface CustomDateFormatterInterface { String convertStringToDate(); } 此功能接口的实现如下所示 CustomDateFormatterInterface customDateFormatterInterface = () -> { LocalDateTime local
@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();
};
我想得到以下日期格式
2011-04-27T19:07:36+0000
。但我有个例外。如果我现在尝试使用,
立即得到输出
2020-12-29T15:44:34Z
我该怎么办?谁能告诉我哪里出了问题?如果需要,请告诉我任何其他信息。使用有时区偏移的,并将其截断为秒
在ISO-8601日历系统(如2007-12-03T10:15:30+01:00)中,从UTC/格林威治偏移的日期时间
如果需要自定义格式,请使用
这将输出为
2020-12-30T09:52:05.082Z
,但我需要输出为2020-12-29T17:36:51+0000
嘿,我想出了一个方法。使用OffsetDateTIme。谢谢
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
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