JDK1.8 中 LocalDateTime 时间格式化两种方案

在jdk1.8中定义日期的时候推荐使用 LocalDateTime 来定义日期格式 就像下面这样,

private LocalDateTime createTime;

生成的日期格式却不是我们经常用的yyyy-MM-dd HH:mm:ss 而是这样的2021-12-02T17:29:29.009 这就需要把时间给弄成我们方便看的样子
测试代码

	@Test
    public void timeFom(){
        System.out.println(LocalDateTime.now());
    }

输出
JDK1.8 中 LocalDateTime 时间格式化两种方案_第1张图片
下面推荐两种格式化方案
第一种:使用注解来格式化日期,就像下面这样

import com.fasterxml.jackson.annotation.JsonFormat;
	@JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDateTime createTime;

这样做的一个弊端就是,需要在每个时间字段上都加上这个注解,太过繁琐,当然要是实体不多的话,用这个也是不错的方法

第二种:就是使用配置文件的方式,去配置时间格式,就像下面这样,这样在我们使用LocalDateTime这个时间类型的时候就会自动的去帮我们把时间给格式化成yyyy-MM-dd HH:mm:ss的样子。

import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

@Configuration
public class LocalDateTimeSerializerConfig {

    @Value("${spring.jackson.date-format:yyyy-MM-dd HH:mm:ss}")
    private String pattern;

    public LocalDateTimeSerializer localDateTimeDeserializer() {
        return new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(pattern));
    }

    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
        return builder -> builder.serializerByType(LocalDateTime.class, localDateTimeDeserializer());
    }
}

你可能感兴趣的:(沉淀,java,jdk1.8)