目录

一般从数据库获取的时间或日期时间格式化为date或者datetime,为了方便前端渲染,API接口返回的时候需要对日期进行格式化转换,通常会用到 SimpleDateFormat 工具处理。

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

String time = dateFormat.format(new Date());

如果一个DTO类里面有很多关于时间字段需要格式化,就会降低开发效率,产生很多重复臃肿的代码。并且有的项目用Date,有的项目会用LocalDateTime

而此时如果能将时间格式统一配置,就可以省下更多时间专注于业务开发了。

接下来介绍SpringBoot中常用的对时间或日期处理的方式

一、@JsonFormat 注解

JsonFormat注解是jackson包里面的一个注解,需要加上依赖

com.fasterxml.jackson.core

jackson-core

2.11.2

@JsonFormat注解需要用在实体类的时间字段上,对应的字段才能进行格式化。

import com.fasterxml.jackson.annotation.JsonFormat;

import lombok.Data;

import java.time.LocalDateTime;

import java.util.Date;

@Data

public class TestDTO {

@JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd")

private LocalDateTime createTime;

@JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")

private Date updateTime;

}

public TestDTO get(){

TestDTO testDTO = new TestDTO();

testDTO.setLocalDateTime(LocalDateTime.now());

testDTO.setDate(new Date());

return testDTO;

}

如下所示

还有一种可以全局定义的

二、@JsonComponent 注解 (全局)

配置类

@JsonComponent

public class DateFormatConfig {

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

private String pattern;

// date 类型全局时间格式化

@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);

};

}

// LocalDate 类型全局时间格式化

@Bean

public LocalDateTimeSerializer localDateTimeDeserializer() {

return new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(pattern));

}

@Bean

public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {

return builder -> builder.serializerByType(LocalDateTime.class, localDateTimeDeserializer());

}

}

这样我们就不用加注解了,也可以实现格式化

@Data

public class TestDTO {

private LocalDateTime localDateTime;

private Date date;

}

java 时间格式化 注解_Java关于时间格式化的方法相关推荐

  1. java中转换日期_java中时间日期格式讲解和转换方法

    额,其实做项目一个无可避免的工具包就是时间日期格式的转换.因为时间久了所以自己也存了好多关于转换的方法之类的.但是有时候就会不满足需求,手写一时半会儿还写不出来(我不知道是不是我太菜了,知道某类大概有 ...

  2. java 格式化日期_Java的日期格式化常用方法

    public class SimpleDateFormatextends DateFormat SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类.它允许进行格式 ...

  3. java 时间判断大小_java判断时间大小

    //构造日期格式yyyy-MM-NN SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); Date d ...

  4. sql两个时间计算时间差_Java 8时间类,越用越香

    为什么会在Jdk8中加入很多时间类 非线程安全 java.util.Date 是非线程安全的,所有的日期类都是可变的,这是Java日期类最大的问题之一. Date date = new Date(); ...

  5. java自定义方法参数注解_Java方法中的参数太多,第1部分:自定义类型

    java自定义方法参数注解 我认为构造函数和方法中冗长的参数列表是Java开发中的另一个" 危险信号 ",就逻辑和功能而言,它们不一定是"错误的",但通常暗示当 ...

  6. java 反射 参数 注解_Java编程之反射中的注解详解

    "注解"这个词,可谓是在Java编程中出镜率比较高,而且也是一个老生常谈的话题.我们之前在聊Spring相关的东西时,注解是无处不在,之前我们简单的聊过一些"注解&quo ...

  7. java join使用实例_Java多线程中关于join方法的使用实例解析

    先上代码 新建一个Thread,代码如下: package com.thread.test; public class MyThread extends Thread { private String ...

  8. 海信JAVA开发笔试题_JAVA设计模式之【工厂方法模式】

    看例子 1.TV产品接口,负责播放 public interface TV // TV接口 { public void play(); } 2.TV工厂接口,负责生产产品 public interfa ...

  9. java 时间格式化 星期_Java SimpleDateFormate时间格式化

    首页 > 基础教程 > 常用类 > 常用 Date类 Java SimpleDateFormate时间格式化 java中SimpleDateFormate是时间简单格式化类,它允许格 ...

  10. java怎么将时间格式化输出_Java获取时间日期并格式化输出

    Java获取当前系统时间.自定义时间和日期格式化输出部分应用总结 1.java获取当前时间,并格式化输出,如2018-12-01 11:20:11 // 获取当前时间,并格式化输出,如2018-12- ...

最新文章

  1. 喜欢古诗词的性格分析
  2. hdu 5011(博弈)
  3. 02 判断某个字符串是否由一个子字符串重复组成
  4. 对软件测试的理解(英文)
  5. 内存或磁盘空间不足,Microsoft Office Excel 无法再次打开或保存任何文档。 [问题点数:20分,结帖人wenyang2004]...
  6. 看完微软大神写的求平均值代码,我意识到自己还是 too young 了
  7. 快速的CSV文件生成器
  8. c语言中嵌套循环的作用,C语言中n层循环嵌套实现
  9. 养老金8000元左右,身体好,无负担,怎样安排退休生活好呢?
  10. 索尼笔记本笔记本计算机在哪里设置,索尼vaio笔记本怎么进bios设置|索尼笔记本进bios按什么键...
  11. 数据库管理系统的层次结构--物理组织
  12. 5G可以让万人演唱会中人人有网上?有它就行
  13. 2020iPS细胞研究进展综述
  14. 财务分析之利润表、现金流量表
  15. CV之IE之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成不同尺寸和质量的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)—五个架构设计思维导图
  16. Me_STM32学习笔记
  17. Java map集合实现上一条(篇),下一条(篇)新闻翻篇功能
  18. 【任务中心】使用说明
  19. PTA - 电话聊天狂人
  20. 计算机程序专利实用新型,涉及计算机程序的实用新型专利保护的思考

热门文章

  1. Office2021 安装MathType
  2. ArcSight Recon
  3. 商用密码产品认证-智能密码钥匙
  4. 马蜂窝张矗:我对技术团队绩效考核管理的几点思考
  5. word onenote_在Word和OneNote中求解和图形方程式
  6. 公众号常用的排版软件有哪些?
  7. 74.android 简单的跳转到小米安全中心首页和小米安全中心的权限管理
  8. 小米乘风破浪,雷军一往无前
  9. 又一个Python数据分析学习利器!
  10. 视频云web播放器样式和组件自定义