日付フォーマットからのミリ秒(ジャクソン+ Javaの8日付)を除外する

ダニエル:

私はジャクソン(2.9.5)が誤ったJava 8から日付をフォーマットする理由を把握しようとしています。

data class Test(
        val zonedDateTim: ZonedDateTime = ZonedDateTime.now(),
        val offsetDateTim: OffsetDateTime = OffsetDateTime.now(),
        val date: Date = Date(),
        val localDateTime: LocalDateTime = LocalDateTime.now()
)

val mapper = ObjectMapper().apply {
    registerModule(KotlinModule())
    registerModule(JavaTimeModule())
    dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss")
    enable(SerializationFeature.INDENT_OUTPUT)
}

println(mapper.writeValueAsString(Test()))

日付形式から、私はミリ秒単位なしでフォーマットされた日付が、このような代わりに、結果のルックスを得ることを期待する提供しました:

{
  "zonedDateTim" : "2018-07-27T13:18:26.452+02:00",
  "offsetDateTim" : "2018-07-27T13:18:26.452+02:00",
  "date" : "2018-07-27T13:18:26",
  "localDateTime" : "2018-07-27T13:18:26.452"
}

すべてのヘルプは高く評価されています。

ベスト、ダニエル

assylias:

dateFormatのみに適用されDateたオブジェクト- 3つのその他の目的は、によって処理されるJavaTimeModuleISOがデフォルトで書式設定使用します。

あなたが別の形式をしたい場合は、使用することができます。

val format = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");

val javaTimeModule = JavaTimeModule();
javaTimeModule.addSerializer(LocalDateTime.class, LocalDateTimeSerializer(format));
javaTimeModule.addSerializer(ZonedDateTime.class, ZonedDateTimeSerializer(format));
mapper.registerModule(javaTimeModule);

また、追加する必要があるかもしれませんmapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);が、私はそれが必要だということを確認してください100%ではないです。

また、そのフォーマットで、あなたはタイムゾーンやオフセット情報を失うことに注意してください。オフセット/ゾーン型、日時の異なるフォーマットをすることができますので。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=185684&siteId=1