java 时间格式化 注解_Java关于时间格式化的方法
目录
一般从数据库获取的时间或日期时间格式化为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关于时间格式化的方法相关推荐
- java中转换日期_java中时间日期格式讲解和转换方法
额,其实做项目一个无可避免的工具包就是时间日期格式的转换.因为时间久了所以自己也存了好多关于转换的方法之类的.但是有时候就会不满足需求,手写一时半会儿还写不出来(我不知道是不是我太菜了,知道某类大概有 ...
- java 格式化日期_Java的日期格式化常用方法
public class SimpleDateFormatextends DateFormat SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类.它允许进行格式 ...
- java 时间判断大小_java判断时间大小
//构造日期格式yyyy-MM-NN SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); Date d ...
- sql两个时间计算时间差_Java 8时间类,越用越香
为什么会在Jdk8中加入很多时间类 非线程安全 java.util.Date 是非线程安全的,所有的日期类都是可变的,这是Java日期类最大的问题之一. Date date = new Date(); ...
- java自定义方法参数注解_Java方法中的参数太多,第1部分:自定义类型
java自定义方法参数注解 我认为构造函数和方法中冗长的参数列表是Java开发中的另一个" 危险信号 ",就逻辑和功能而言,它们不一定是"错误的",但通常暗示当 ...
- java 反射 参数 注解_Java编程之反射中的注解详解
"注解"这个词,可谓是在Java编程中出镜率比较高,而且也是一个老生常谈的话题.我们之前在聊Spring相关的东西时,注解是无处不在,之前我们简单的聊过一些"注解&quo ...
- java join使用实例_Java多线程中关于join方法的使用实例解析
先上代码 新建一个Thread,代码如下: package com.thread.test; public class MyThread extends Thread { private String ...
- 海信JAVA开发笔试题_JAVA设计模式之【工厂方法模式】
看例子 1.TV产品接口,负责播放 public interface TV // TV接口 { public void play(); } 2.TV工厂接口,负责生产产品 public interfa ...
- java 时间格式化 星期_Java SimpleDateFormate时间格式化
首页 > 基础教程 > 常用类 > 常用 Date类 Java SimpleDateFormate时间格式化 java中SimpleDateFormate是时间简单格式化类,它允许格 ...
- java怎么将时间格式化输出_Java获取时间日期并格式化输出
Java获取当前系统时间.自定义时间和日期格式化输出部分应用总结 1.java获取当前时间,并格式化输出,如2018-12-01 11:20:11 // 获取当前时间,并格式化输出,如2018-12- ...
最新文章
- 喜欢古诗词的性格分析
- hdu 5011(博弈)
- 02 判断某个字符串是否由一个子字符串重复组成
- 对软件测试的理解(英文)
- 内存或磁盘空间不足,Microsoft Office Excel 无法再次打开或保存任何文档。 [问题点数:20分,结帖人wenyang2004]...
- 看完微软大神写的求平均值代码,我意识到自己还是 too young 了
- 快速的CSV文件生成器
- c语言中嵌套循环的作用,C语言中n层循环嵌套实现
- 养老金8000元左右,身体好,无负担,怎样安排退休生活好呢?
- 索尼笔记本笔记本计算机在哪里设置,索尼vaio笔记本怎么进bios设置|索尼笔记本进bios按什么键...
- 数据库管理系统的层次结构--物理组织
- 5G可以让万人演唱会中人人有网上?有它就行
- 2020iPS细胞研究进展综述
- 财务分析之利润表、现金流量表
- CV之IE之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成不同尺寸和质量的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)—五个架构设计思维导图
- Me_STM32学习笔记
- Java map集合实现上一条(篇),下一条(篇)新闻翻篇功能
- 【任务中心】使用说明
- PTA - 电话聊天狂人
- 计算机程序专利实用新型,涉及计算机程序的实用新型专利保护的思考