全局时间格式化-程序员宅基地

技术标签: spring  spring boot  elementui  【SpringBoot】  

需求

经常会需要后端给前端传时间,有各种类型的时候,date、java8中LocalDateTime等等,虽然挺简单一个小事,但是也挺繁琐的,毕竟大家容易犯懒。

实践

代码(SpringBoot)

添加jackson依赖

  <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.10.2</version>
        </dependency>

修改application.properties

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

 时间格式化配置类

package com.example.jsondemo;

import com.fasterxml.jackson.databind.SerializationFeature;
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.boot.jackson.JsonComponent;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.TimeZone;

/**
 * @author CBeann
 * @create 2020-09-05 19:23
 */
@Configuration
@JsonComponent
public class DateFormatConfig {


    @Value("${spring.jackson.date-format}")
    private String pattern;

    /**
     * @description date 类型全局时间格式化
     * @date 2020-09-05 19:23
     */
    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilder() {

        return builder -> {
            TimeZone tz = TimeZone.getTimeZone("UTC");
            DateFormat df = new SimpleDateFormat(pattern);
            df.setTimeZone(tz);
            builder.failOnEmptyBeans(false)
                    .failOnUnknownProperties(false)
                    .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
                    .dateFormat(df);
        };
    }

    /**
     * @description LocalDate 类型全局时间格式化
     * @date 2020-09-05 19:23
     */
    @Bean
    public LocalDateTimeSerializer localDateTimeDeserializer() {
        return new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(pattern));
    }

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

实体类 

@Data
public class Student {

    private String name;
    private Date date;
    private LocalDateTime localDateTime;
    private LocalDate localDate;
    private LocalTime localTime;
}

 测试

@RequestMapping("/hello")
    public Object jsonObject() {
        Student student = new Student();
        student.setDate(new Date());
        student.setLocalDate(LocalDate.now());
        student.setLocalDateTime(LocalDateTime.now());
        student.setLocalTime(LocalTime.now());

        return student;
    }

测试结果

使用自定义格式

@JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd")
@Data
public class Student {

    private String name;
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd")
    private Date date;
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd")
    private LocalDateTime localDateTime;
    private LocalDate localDate;
    private LocalTime localTime;
}

参考

3种 Springboot 全局时间格式化方式,别再写重复代码了

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_37171353/article/details/108423651

智能推荐

编程之道-1 需求分析_编程需求分析-程序员宅基地

文章浏览阅读587次。真正开始独立做软件的时候才明白当个小程序员是一件多么幸运的事情,只要关注的技术,关注效能,其它的一切可以由上级去考虑去安排.做需求分析蛮累人的,不同的公司,不同的分析师方法也不一样,但总体来说,指理解用户需求,就软件功能与客户达成一致,估计软件风险和评估项目代价,最终形成开发计划的一个复杂过程。在我们公司来说呢,有专门的跟用户沟通和获取相关信息的同事,这种做法在于程序员可以专心做程序,不用_编程需求分析

js中typeof和instanceof的区别+必须熟记于心的JavaScript数据类型 — 第3.4 章_typeof 3 + 4-程序员宅基地

文章浏览阅读630次。typeof和instanceof的区别 +JS数据类型  相信大家学习了,很多门编程语言,但是扪心自问一下,你真的很了解你所学的语言吗?对于写了这么长时间js的我来说,这是第一次能够静下心来,真正为了学习而学习的时候! 就拿JavaScript语言来说,它虽然是一门弱类型语言,但是,我认为,不管它是什么语言,至少在我们学习的时候,要清楚地记得,它的数据类型分哪几类,每一类又分为哪几种! 废话不_typeof 3 + 4

常用网站资源_常用网站 csdn-程序员宅基地

文章浏览阅读1.1k次。原链接:http://blog.chinaunix.net/u3/105477/showart_2181545.html (一). NS常用基本网站: 1. Maillist :寻求问题答案最好的地方 http://mailman.isi.edu/pipermail/ns-users/ 2._常用网站 csdn

JavaScript富文本编辑器HTML特殊字符转义MYSQL报错_js字符串转义导致的插入数据失败-程序员宅基地

文章浏览阅读1.4k次。最近在做一个博客,后台用的富文本编辑器,编辑完成后以html形式获取代码,获取到的html代码中部分特殊字符没有转义导致数据库插入语句报错。富文本编辑器中内容:(代码里用的英文单引号)直接获取到的html代码:(未经任何处理)<p style="text-align: center;"> <span style="font-weight: bold;">标题<..._js字符串转义导致的插入数据失败

php curl指定远端IP_php curl hostip-程序员宅基地

文章浏览阅读4.1k次。<?php$ch = curl_init();curl_setopt($ch, CURLOPT_URL, 'http://192.168.0.66/indexdata/');curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: www.domain.com'));$response = curl_exec($ch);if (curl_errn_php curl hostip</div>

VM虚拟机BT5下对usb无线网卡的配置_bt5虚拟机调用usb网卡-程序员宅基地

文章浏览阅读4.9k次。准备东西1.BT5-GNOME-VM-32 (最好直接使用网上别人配置好的bt5 VM版,不要自己配置,百度搜应该搜得到,有兴趣的可以试试yeslab教主配置的bt5)2.usb无线网卡,我的是wna31003.相应usb网卡的驱动程序,一般网卡商都有提供,百度搜自己的驱动4.ndiswrapper软件准备就这么多。4样东西,绝对都有,没usb网卡要自己买的。本机自带的网卡是无_bt5虚拟机调用usb网卡

随便推点

使用charles抓取手机APP的数据包,https请求一样能抓取-程序员宅基地

文章浏览阅读1.3k次。在开发过程中,经常会遇到真机调试的场景,但是受环境限制,只能使用数据抓包的办法来查看http请求的数据结果和状态,下面就为大家介绍一款非常好用的数据抓包工具及使用方法;工具介绍Charles 是一款收费的抓包修改工具,易上手,数据请求容易控制,修改简单,抓取数据的开始暂停方便等优势!下载地址:https://www.charlesproxy.com/download/1.下载...

DMA框架介绍(1)_arm dma框架-程序员宅基地

文章浏览阅读1k次。对SMMU驱动已经熟悉了一段时间,接下来计划对相关的内容进行分析。内核DMA框架用于将内存物理地址PA进行映射为设备可访问的IOVA,并对驱动提供API可用接口。它包括IOVA框架(包括IOVA的分配和释放)、IOMMU框架(DMA MAP/UNMAP过程)、页表操作、ARM SMMU驱动及提供给驱动的框架。..._arm dma框架

Python3.8 Pycharm+Anaconda环境下 Pytorch安装报错问题_error: no matching distribution found for pytorch=-程序员宅基地

文章浏览阅读3.6k次。@[小粽子~的第一篇博客]新的环境,想要安装pytorch就是安装不好,明明网络没有问题,也按照网络上的教程来,但就是出现以下错误:ERROR: Could not find a version that satisfies the requirement torch=1.6.0 (from versions: 0.1.2, 0.1.2.post1, 0.1.2.post2)ERROR: No matching distribution found for torch=1.6.0试了网上各种博客中_error: no matching distribution found for pytorch==1.6.0

使用windbg检测内存泄漏[有源码和截图]_windbg attach to process-程序员宅基地

文章浏览阅读1.6k次。使用windbg检测内存泄漏[有源码和截图]一、基本步骤配置环境windbg:配置symbol文件路径:“SRV*d:\symbols*http://msdl.microsoft.com/download/symbols”.增加测试程序test.exe的pdb 文件到symbol文件路径采用Gflags.exe,增加userstack trace到测试程序leak.exe中。..._windbg attach to process

html5canvas定义,HTML5_Canvas_属性、定义及方法(学习笔记)-程序员宅基地

文章浏览阅读214次。HTML5_Canvas_属性、定义及方法(学习笔记)2018年09月12日|萬仟网IT编程 |我要评论一、简单图形,整套的属性和方法专门用于绘制矩形:1、fillstyle可以设置为css颜色、一个图案或一种颜色渐变。fillstyle默认是纯黑色,你可以设置成你喜欢的任意颜色。只要页面打开着,每一、简单图形,整套的属性和方法专门用于绘制矩形:..._html5 canvas style 属性用法

PC-DIMS脱机软件 海克斯康三坐标机脱机编程。蔡司三坐标CALYPSO_pc dims免费版-程序员宅基地

文章浏览阅读427次。基于PC-DIMS脱机软件 的海克斯康三坐标机脱机编程软件手册。_pc dims免费版

推荐文章

热门文章

相关标签