【发布时间】:2021-05-12 04:03:15
【问题描述】:
我创建了这个反序列化器,以便在一个集中的自定义对象映射器 bean 中进行管理,它工作正常,但我无法反序列化以这种格式 '2017-04-04T08:04+0000 出现的日期' 转换为正确的 OffsetDateTime 格式 - 得到以下异常:
Text '2017-04-04T08:04+0000' could not be parsed, unparsed text found at index 19 (through reference chain: earth.green.integration_models.sh.Prediction$PredictionBuilder["created"])
我在互联网上搜索了很多格式,但没有一个有效,所以如果你们中的任何人知道我可以使用哪种格式来反序列化这个日期,将会非常有帮助。
public class OffsetDateTimeDeserializer
extends JsonDeserializer<OffsetDateTime>
{
private final DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "uuuu-MM-dd'T'HH:mm[XXX][XXXX]" );
@Override
public OffsetDateTime deserialize( final JsonParser parser,
final DeserializationContext context )
throws IOException
{
formatter.withZone( ZoneId.of( "GMT") );
return OffsetDateTime.parse( parser.readValueAs( String.class ), formatter );
}
}
【问题讨论】:
-
您创建了一个具有自定义格式的日期格式化程序,但您最终没有使用它。使用
formatter而不是DateTimeFormatter.ISO_OFFSET_DATE_TIME。 -
使用格式
"uuuu-MM-dd'T'HH:mmX" -
谢谢,@Andreas 我认为你的格式有效,我也尝试过使用'X's "uuuu-MM-dd'T'HH:mm[XXXXX][XXXX][X] " 这也有效
-
我无法重现。在我的 Java 8 和我的 Java 11 上,您的格式化程序都会解析
2017-04-04T08:04+0000。
标签: java simpledateformat date-formatting dateformatter isodate