0

我陷入了 java.util.Date 对象的奇怪行为之间。我正在使用 mongodb,所有日期都存储在 UTC 中。而数据库中的存储值都是正确的。

“创建日期”:ISODate(“2021-05-08T15:37:48.882Z”)

但是当它映射到 java.util.Date 类型的 Pojo 属性时,输出是

"创建日期":"2021-05-08T15:37:48.882Z[UTC]"

还有这个[UTC]我不明白为什么?有人赶上这个问题吗?我正在使用quarkus,用于连接jdk11的库是mongoio.quarkus:quarkus-mongodb-panache

编辑:

为了处理我的 android 应用程序中的信息,我创建了一个自定义反序列化器:

class DateDeserializer(vc: Class<*>?) : StdDeserializer<Date>(vc) {

    constructor() : this(Date::class.java)

    override fun deserialize(p: JsonParser?, ctxt: DeserializationContext?): Date {
//        TODO("Not yet implemented")
        return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            Date.from(ZonedDateTime.parse(p?.text).toInstant())
        } else {
            TODO("VERSION.SDK_INT < O")
        }
    }

}

但正如我所说,这似乎不是一种更清洁的方法。

让我知道是否需要更多信息。

4

1 回答 1

0

问题发生在

implementation 'io.quarkus:quarkus-resteasy-jsonb'

存在将从驱动程序获得的带时间戳的日期序列化为上述格式,删除该依赖关系并且一切正常。

感谢所有花时间思考解决方案的人。

于 2021-05-09T12:42:32.057 回答