Java日期转换注解配置date format时间失效

 更新时间:2022年12月11日 14:53:35   作者:刨红薯的小羊竿尔  
这篇文章主要为大家介绍了Java日期转换注解配置date format时间失效,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

引言

今天生产上突然出现了列表日期错误,与数据库实际差了8个小时;

这下可尴尬了,之前迭代都是正常,肯定是那里出幺蛾子了,一顿排除,原来是新添加拦截器继承WebMvcConfigurationSupport导致date-format时间格式失效了。

顺带学习了一下@JsonFormat和@DateTimeFormat的用法:

注解@JsonFormat主要是后台到前台的时间格式的转换

注解@DateTimeFormat主要是前后到后台的时间格式的转换

一、@DateTimeFormat

主要解决前端时间控件传值到后台接收准确的Date类属性的问题,我们可以在需要接收的类中对应的时间类型属性上加上@DateTimeFormat注解,并在注解中加上pattern属性。

// 出生年月日 
@DateTimeFormat(pattern = "yyyy-MM-dd HH-mm-ss") 
private Date birthday;

二、@JsonFormat

该注解主要解决后台从数据库中取出时间类型赋予java对象的Date属性值无法在前端以一定的日期格式来呈现,默认返回的是一个带时区的格式串,不符合我们日常要呈现的yyyy-MM-dd格式的日期。 同样,我们在对应的接收对象时间类型上加上@JsonFormat注解,并在注解中加上pattern属性以及timezone属性,例如:

// 出生年月日
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthday;

pattern:是你需要转换的时间日期的格式

timezone:是时间设置为东八区,避免时间在转换中有误差;GMT+8表示我们以东八区时区为准。

三、application.yml文件配置

1、数据库配置时区serverTimezone=Asia/Shanghai或者serverTimezone=GMT%2B8

解决mysql从数据库查询的时间与实际时间相差8小时:

spring.datasource.url=jdbc:mysql://10.35.105.25:3306/database?characterEncoding=utf-8&serverTimezone=GMT%2B8

2、配置spring.jackson

spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
spring:
  jackson:
    time-zone: GMT+8
    date-format: yyyy-MM-dd HH:mm:ss

四、SpringBoot拦截器

SpringBoot拦截器SpringBoot拦截器继承WebMvcConfigurationSupport导致date-format时间格式失效

1、解决办法不继承WebMvcConfigurationSupport,修改为实现WebMvcConfigurer接口

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Resource
    private JwtInterceptor jwtInterceptor;
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(jwtInterceptor)
                //拦截所有url
                .addPathPatterns("/**")
                //排除登录url
                .excludePathPatterns("/", "/login");
    }
}

2、另外还有方式就是引入fastjson替换jackson

3、也可以继承WebMvcConfigurationSupport重写configureMessageConverters,自定义转换器处理日期类型转换

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder()
            .dateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"))
            .serializationInclusion(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL);
    converters.add(new StringHttpMessageConverter(StandardCharsets.UTF_8));
    converters.add(new MappingJackson2HttpMessageConverter(builder.build()));
}

以上就是Java日期转换注解配置date format时间失效的详细内容,更多关于Java日期转换注解配置的资料请关注脚本之家其它相关文章!

相关文章

  • springboot+feign+Hystrix整合(亲测有效)

    springboot+feign+Hystrix整合(亲测有效)

    本文主要介绍了springboot+feign+Hystrix整合,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-11-11
  • idea导入项目爆红问题记录以及解决

    idea导入项目爆红问题记录以及解决

    这篇文章主要介绍了idea导入项目爆红问题记录以及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Java利用AQS实现自定义锁

    Java利用AQS实现自定义锁

    本文主要介绍了Java利用AQS实现自定义锁,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Java设计模式中的单一责任原则详解

    Java设计模式中的单一责任原则详解

    这篇文章主要介绍了Java设计模式中的单一责任原则详解,应该有且仅有一个原因引起类的变更,即单一指责原则要求一个借口或类只有一个原因引起变化,也就是一个接口或类只有一个职责,它就负责一件事情,需要的朋友可以参考下
    2023-11-11
  • 详解Reactor中Context的用法

    详解Reactor中Context的用法

    在Reactor中提供了Context来替代ThreadLocal,可以实现一个跨线程的共享变量的透明方式。本文主要为大家介绍了Context的用法的用法,感兴趣的可以了解一下
    2023-02-02
  • JavaWeb利用邮箱帮用户找回密码

    JavaWeb利用邮箱帮用户找回密码

    这篇文章主要为大家详细介绍了JavaWeb利用邮箱帮用户找回密码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • 聊聊在Servlet中怎么上传文件

    聊聊在Servlet中怎么上传文件

    很多朋友不清楚在Servlet中怎么上传文件,谈到这个问题,首先需要我们掌握开发servlet的步骤,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-05-05
  • JAVA使用动态代理对象进行敏感字过滤代码实例

    JAVA使用动态代理对象进行敏感字过滤代码实例

    这篇文章主要介绍了JAVA使用动态代理对象进行敏感字过滤代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Java单例模式的应用示例

    Java单例模式的应用示例

    这篇文章主要介绍了Java单例模式的应用示例,需要的朋友可以参考下
    2014-02-02
  • 使用HttpServletResponse对象获取请求行信息

    使用HttpServletResponse对象获取请求行信息

    这篇文章主要介绍了使用HttpServletResponse对象获取请求行信息,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02

最新评论