我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Springboot配置返回日期格式化的方法有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Springboot配置返回日期格式化的方法有哪些

本篇内容介绍了“Springboot配置返回日期格式化的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

格式化全局时间字段

在yml中添加如下配置:

spring.jackson.date-format=yyyy-MM-dd HH:mm:ss

或者

spring:    jackson:        ## 格式为yyyy-MM-dd HH:mm:ss        date-format: yyyy-MM-dd HH:mm:ss        ## 定时区,解决8小时的时间差问题        time-zone: GMT+8

1.前端时间格式化(不做无情人)

前端工程时间格式化方法,实现代码如下。

// JS 版时间格式化function dateFormat(fmt, date) {    let ret;    const opt = {        "Y+": date.getFullYear().toString(),        // 年        "m+": (date.getMonth() + 1).toString(),     // 月        "d+": date.getDate().toString(),            // 日        "H+": date.getHours().toString(),           // 时        "M+": date.getMinutes().toString(),         // 分        "S+": date.getSeconds().toString()          // 秒        // 有其他格式化字符需求可以继续添加,必须转化成字符串    };    for (let k in opt) {        ret = new RegExp("(" + k + ")").exec(fmt);        if (ret) {            fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))        };    };    return fmt;}

方法调用:

let date = new Date();dateFormat("YYYY-mm-dd HH:MM:SS", date);

但是我们能对前端小姐姐这么残忍吗?????就像下面的前端小姐姐这么可爱,你忍心?????

不,我们不能,坚决在后端改!!!!!!

2.SimpleDateFormat格式化(不推荐)

使用 SimpleDateFormat 来进行时间格式化,它也是 JDK 8 之前重要的时间格式化方法,它的核心实现代码如下:

// 定义时间格式化对象和定义格式化样式SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 格式化时间对象String date = dateFormat.format(new Date())

接下来我们使用 SimpleDateFormat 来实现一下本项目中的时间格式化,它的实现代码如下:

@RequestMapping("/list")public List<User> getList() {    // 定义时间格式化对象    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    List<User> list = userMapper.getList();    // 循环执行时间格式化    list.forEach(item -> {        // 使用预留字段 ctime 接收 createtime 格式化的时间(Date->String)        item.setCtime(dateFormat.format(item.getCreatetime()));        item.setUtime(dateFormat.format(item.getUpdatetime()));    });    return list;}

但是这样会产生新的问题,为什么接口的返回字段咋变了呢,之前的字段是 createtime 现在却是 ctime。

这是因为使用 SimpleDateFormat.format 方法之后,它返回的是一个 String 类型的结果,而我们之前的 createtime 和 updatetime 字段都是 Date 类型的,因此它们是不能接收时间格式化得结果的。

3.DateTimeFormatter格式化(不推荐)

JDK 8 之后,我们可以使用 DateTimeFormatter 来替代 SimpleDateFormat,因为 SimpleDateFormat 是非线程安全的,而 DateTimeFormatter 是线程安全的,所以如果是 JDK 8 以上的项目,尽量使用 DateTimeFormatter 来进行时间格式化。

DateTimeFormatter 格式化的代码和 SimpleDateFormat 类似,具体实现如下:

@RequestMapping("/list")public List<User> getList() {    // 定义时间格式化对象    DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");    List<User> list = userMapper.getList();    // 循环执行时间格式化    list.forEach(item -> {        // 使用预留字段 ctime 接收 createtime 格式化的时间(Date->String)        item.setCtime(dateFormat.format(item.getCreatetime()));        item.setUtime(dateFormat.format(item.getUpdatetime()));    });    return list;}

DateTimeFormatter 和 SimpleDateFormat 在使用上的区别是 DateTimeFormatter 是用来格式化 JDK 8 提供的时间类型的,如 LocalDateTime,而 SimpleDateFormat 是用来格式化 Date 类型的,所以我们需要对 Userer 实体类做如下的修改:

import com.fasterxml.jackson.annotation.JsonIgnore;import lombok.Data;import java.time.LocalDateTime;@Datapublic class User {    private int id;    private String username;    @JsonIgnore    private LocalDateTime createtime;    private String ctime;    @JsonIgnore    private LocalDateTime updatetime;    private String utime;}

我们可以使用 LocalDateTime 来接收 MySQL 中的 datetime 类型。

4.全局时间格式化(推荐)

以上两种后端格式化的实现都有一个致命的缺点,它们在进行时间格式化的时候,都需要对核心业务类做一定的修改,这就相当为了解决一个问题,又引入了一个新的问题,那有没有简单一点、优雅一点的解决方案呢?

答案是:有的。我们可以不改任何代码,只需要在配置文件中设置一下就可以实现时间格式化的功能了。

首先,我们找到 Spring Boot 的配置文件 application.properties(或 application.yml),只需要在 application.properties 配置文件中添加以下两行配置:

格式化全局时间字段

在yml中添加如下配置:

spring.jackson.date-format=yyyy-MM-dd HH:mm:ss

指定时间区域类型
在yml中添加:

spring.jackson.time-zone=GMT+8

或者下面的格式

spring:    jackson:        ## 格式为yyyy-MM-dd HH:mm:ss        date-format: yyyy-MM-dd HH:mm:ss        ## 定时区,解决8小时的时间差问题        time-zone: GMT+8

这样设置之后,我们将原始的 User 和 UserController 进行还原。

User 实现代码如下:

import lombok.Data;import java.util.Date;@Datapublic class User {    private int id;    private String username;    private Date createtime;    private Date updatetime;}

UserController 实现代码:

@RequestMapping("/list")public List<User> getList() {    return userMapper.getList();}

然后我们运行程序,看到的执行结果如下:

从以上结果和代码可以看出,我们只需要在程序中简单配置一下,就可以实现所有时间字段的格式化了。

实现原理分析

为什么在配置文件中设置一下,就可以实现所有时间字段的格式化了呢?

# 格式化全局时间字段spring.jackson.date-format=yyyy-MM-dd HH:mm:ss# 指定时间区域类型spring.jackson.time-zone=GMT+8

这是因为 Controller 在返回数据时,会自动调用 Spring Boot 框架中内置的 JSON 框架 Jackson,对返回的数据进行统一的 JSON 格式化处理,在处理的过程中它会判断配置文件中是否设置了“spring.jackson.date-format=yyyy-MM-dd HH:mm:ss”,如果设置了,那么 Jackson 框架在对时间类型的字段输出时就会执行时间格式化的处理,这样我们就通过配置来实现全局时间字段的格式化功能了。

为什么要指定时间区域类型“spring.jackson.time-zone=GMT+8”呢?

最现实的原因是,如果我们不指定时间区域类型,那么查询出来的时间就会比预期的时间少 8 个小时,这因为我们(中国)所处的时间区域比世界时间少 8 个小时导致的,而当我们设置了时区之后,我们的时间查询才会和预期时间保持一致。

GMT 是什么?时间区域设置中的“GMT” 是什么意思?

Greenwich Mean Time (GMT) 格林尼治时间,也叫做世界时间。

(下面是格林尼治时间的百度百科,想了解的可以看一下,不想了解的知道是世界时间就行,其他的就是的臀部&mdash;&mdash;规定)

格林尼治时间:格林尼治是英国伦敦南郊原皇家格林尼治天文台所在地,地球本初子午线的标界处,世界计算时间和经度的起点。以其海事历史、作为本初子午线的标准点、以及格林尼治时间以其命名而闻名于世。这里地势险要,风景秀丽,兼具历史和地方风情,也是伦敦在泰晤士河的东方门户。

不光是天文学家使用格林尼治时间,就是在新闻报刊上也经常出现这个名词。我们知道各地都有各地的地方时间。如果对国际上某一重大事情,用地方时间来记录,就会感到复杂不便.而且将来日子一长容易搞错。因此,天文学家就提出一个大家都能接受且又方便的记录方法,那就是以格林尼治的地方时间为标准。

以本初子午线的平子夜起算的平太阳时。又称格林尼治平时或格林尼治时间。各地的地方平时与世界时之差等于该地的地理经度。1960年以前曾作为基本时间计量系统被广泛应用。由于地球自转速率曾被认为是均匀的,因此在1960年以前,世界时被认为是一种均匀时。由于地球自转速度变化的影响,它不是一种均匀的时间系统,它与原子时或力学时都没有任何理论上的关系,只有通过观测才能对它们进行比较。后来世界时先后被历书时和原子时所取代,但在日常生活、天文导航、大地测量和宇宙飞行等方面仍属必需;同时,世界时反映地球自转速率的变化,是地球自转参数之一,仍为天文学和地球物理学的基本资料。

5.部分时间格式化(推荐)

某些场景下,我们不需要对全局的时间都进行统一的处理,这种情况我们可以使用注解的方式来实现部分时间字段的格式化。

例如需要在实体类 User 中添加 @JsonFormat 注解,这样就可以实现时间的格式化功能了,实现代码如下:

import com.fasterxml.jackson.annotation.JsonFormat;import lombok.Data;import java.util.Date;@Datapublic class User {    private int id;    private String username;    // 对 createtime 字段进行格式化处理    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone = "GMT+8")    private Date createtime;    private Date updatetime;}

修改完代码之后,我们运行项目就可以显示格式化后的时间了

“Springboot配置返回日期格式化的方法有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Springboot配置返回日期格式化的方法有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Springboot配置返回日期格式化的方法有哪些

本篇内容介绍了“Springboot配置返回日期格式化的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!格式化全局时间字段在yml中
2023-07-02

SpringBoot中Jackson日期格式化的方法

这篇“SpringBoot中Jackson日期格式化的方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringBoot
2023-06-30

Flex日期格式化的具体格式有哪些

这篇文章给大家分享的是有关Flex日期格式化的具体格式有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Flex日期格式化在Flex中在类是datagrid等list控件使用labelFunction格式各种文
2023-06-17

SpringBoot时间格式化的方法有哪些

这篇文章主要介绍了SpringBoot时间格式化的方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot时间格式化的方法有哪些文章都会有所收获,下面我们一起来看看吧。时间格式化在项目中使用
2023-06-27

java中日期格式转换的方法有哪些

Java中日期格式转换的方法有以下几种:1. SimpleDateFormat类:通过指定的模式将日期转换为字符串,或者将字符串解析为日期。例如:```javaSimpleDateFormat sdf = new SimpleDateFor
2023-08-17

springboot 返回json格式数据时间格式配置方式是怎么样的

springboot 返回json格式数据时间格式配置方式是怎么样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。返回json格式数据时间格式配置数据库里面查出
2023-06-25

DOS批处理下格式化日期字符串的方法有哪些

这篇文章将为大家详细讲解有关DOS批处理下格式化日期字符串的方法有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。谈到日期字符串的输出,真是让人烦。在Linux下,简单的一句话:date +%Y%m%d
2023-06-08

html格式化的方法有哪些

html格式化方法:1、使用在线html格式化工具;2、使用代码编辑器自带的html格式化快捷键,如visual studio code中的shift + alt + f;3、使用插件,如sublime text中的html/css/js
html格式化的方法有哪些
2024-03-08

PHP时间戳转换为日期格式的方法有哪些?

PHP时间戳是指从1970年1月1日 00:00:00(格林尼治标准时间)开始计算的秒数,是很常见的时间表示方式。在PHP中将时间戳转换为日期格式有多种方法,下面将介绍其中几种常用的方法,并附上具体的代码示例。方法一:使用date()函数
PHP时间戳转换为日期格式的方法有哪些?
2024-03-12

Java格式化输出的方法有哪些

这篇文章主要讲解了“Java格式化输出的方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java格式化输出的方法有哪些”吧!Java控制台输出1.使用System.out.write
2023-07-05

win7优化配置的方法有哪些

本篇内容介绍了“win7优化配置的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!win7优化配置的方法方法一:1、首先找到计算机,
2023-07-01

vb格式化字符串的方法有哪些

在VB中,格式化字符串的方法有以下几种:1. 使用字符串插入符号({0}、{1}、{2}等)和String.Format方法。例如:```Dim name As String = "John"Dim age As Integer = 25D
2023-10-10

mysql格式化字符串的方法有哪些

在MySQL中,可以使用以下方法对字符串进行格式化:使用CONCAT函数来拼接字符串:SELECT CONCAT('Hello', 'World') AS formatted_string;使用FOR
mysql格式化字符串的方法有哪些
2024-04-09

SpringBoot获取配置文件内容的方式有哪些

这篇文章主要介绍“SpringBoot获取配置文件内容的方式有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot获取配置文件内容的方式有哪些”文章能帮助大家解决问题。前言现有配置
2023-07-05

SpringBoot读取Yml配置文件的方法有哪些

这篇“SpringBoot读取Yml配置文件的方法有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringBoot读
2023-07-05

wps中将pdf格式转化为word格式的方法有哪些

这篇文章将为大家详细讲解有关wps中将pdf格式转化为word格式的方法有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。转化方法:1、用wps软件打开pdf文档;2、点击“开始”选项卡,点击“PDF转
2023-06-14

python中有哪些格式化字符串的方法

本篇文章为大家展示了python中有哪些格式化字符串的方法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬
2023-06-14

Python格式化输出字符串的方法有哪些

本篇内容介绍了“Python格式化输出字符串的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Python 格式化输出字符串(输出字
2023-07-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录