Date formatting not working 2022-09-18T05:25:30.000+00:00

java->web

@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") does not work for general version issues or dependency conflicts

solve:

spring:
  jackson:
    serialization:
      write-dates-as-timestamps: false
    date-format: yyyy-MM-dd HH:mm:ss

This configuration will serialize the date field when the java object is transmitted to the web front end
insert image description here

java<–>db

If it is a date format in the database, please ensure that your field format is in accordance with the following requirements
1. Object type Date
2. Database field type datetime
insert image description here

The value passed by the front end is 2023-07-02T11:48:56.000Z The java back end uses Date

I generally like to add two serializers directly

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import org.springframework.boot.jackson.JsonComponent;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

@JsonComponent
public class CustomDateDeserializerConfig extends JsonDeserializer<Date> {

    private static final SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");

    @Override
    public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
        String dateString = jsonParser.getText();
        try {
            return dateFormatter.parse(dateString);
        } catch (ParseException e) {
            throw new IOException("Failed to parse date: " + dateString, e);
        }
    }
}
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import org.springframework.boot.jackson.JsonComponent;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;


@JsonComponent
public class CustomDateSerializerConfig extends JsonSerializer<Date> {

    private static final SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");

    @Override
    public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        String formattedDate = dateFormatter.format(date);
        jsonGenerator.writeString(formattedDate);
    }





}

yml configuration

spring:
  jackson:
    date-format: yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
    serialization:
      write-dates-as-timestamps: false
    deserialization:
      fail-on-unknown-properties: false
    property-naming-strategy: SNAKE_CASE
    annotations:
      enabled: true

Guess you like

Origin blog.csdn.net/qq_56533553/article/details/131498976