广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >日期格式化的最佳实践:如何在Java中处理日期格式化
  • 822
分享到

日期格式化的最佳实践:如何在Java中处理日期格式化

java开发语言 2023-09-17 19:09:32 822人浏览 独家记忆
摘要

文章目录 前言一、使用format()方法二、使用注解@JsonFormat三、使用消息转换器1.定义用户类2.重写DateSerializer 方法3.定义对象映射器:4.定义消息转换器5.

文章目录


前言

当涉及到日期格式化时,了解正确的方式和最佳实践是至关重要的。
日期格式化是将日期转换为特定格式的过程,以便在应用程序开发中更好地展示、存储或交互。
以下内容展示常用的三种方式


一、使用fORMat()方法

在Java中,你可以使用java.time.format.DateTimeFormatter类来格式化日期,并将格式化后的日期字符串返回给前端
以下是一个示例:

import java.time.LocalDate;import java.time.format.DateTimeFormatter;public class DateFormattingExample {    public static void main(String[] args) {        LocalDate date = LocalDate.now();        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");        String formattedDate = date.format(formatter);        System.out.println(formattedDate);        // 输出类似于 "2023-08-06" 的日期字符串    }}

在上述示例中,我们使用LocalDate来表示当前日期,然后创建一个DateTimeFormatter对象,
指定了期望的日期格式模式(例如,"yyyy-MM-dd"代表年、月、日)。
通过format()方法,我们将日期格式化为字符串,并将其打印出来。

二、使用注解@JSONFormat

首先,确保你的项目中引入了Spring Boot和相关的依赖。
在你的实体类中,可以使用注解@JsonFormat来指定日期字段的格式化方式。

例如:
先定义一个用户类:

import com.fasterxml.jackson.annotation.jsonFormat;import lombok.Data;import java.util.Date;@Datapublic class User {    private Long Id;    private String name;    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")    private Date createDate;    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")    private Date updateDate;}

测试调用返回User对象:

import com.example.result.Result;import org.springframework.WEB.bind.annotation.*;import java.util.Date;@RestControllerpublic class UserWebTest {    @GetMapping("/getUser")    public Result<?> aa(){        User user = new User();        user.setId(1L);        user.setName("jljlm");        user.setCreateDate(new Date());        user.setUpdateDate(new Date());        return Result.success(user);    }}

结果:
在这里插入图片描述

三、使用消息转换器

使用消息转换器(MessageConverter)来格式化日期步骤如下:

1.定义用户类

import lombok.Data;import java.util.Date;@Datapublic class User {    private Long Id;    private String name;    private Date createDate;    private Date updateDate;}

2.重写DateSerializer 方法

import com.fasterxml.jackson.core.JsonGenerator;import com.fasterxml.jackson.databind.JsonSerializer;import com.fasterxml.jackson.databind.SerializerProvider;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;public class DateSerializer extends JsonSerializer<Date> {    private final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    @Override    public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {        String formattedDate = formatter.format(date);        jsonGenerator.writeString(formattedDate);    }}

3.定义对象映射器:

import com.fasterxml.jackson.databind.DeserializationFeature;import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.databind.deser.std.DateDeserializers;import com.fasterxml.jackson.databind.module.SimpleModule;import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;import java.time.LocalDate;import java.time.LocalDateTime;import java.time.LocalTime;import java.time.format.DateTimeFormatter;import java.util.Date;import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;public class JacksonObjectMapper extends ObjectMapper {    public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";    public JacksonObjectMapper() {        super();        //收到未知属性时不报异常        this.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);        //反序列化时,属性不存在的兼容处理        this.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);        SimpleModule simpleModule = new SimpleModule()                .aDDDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))                .addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))                .addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))                .addDeserializer(Date.class,new DateDeserializers.DateDeserializer())                .addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))                .addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))                .addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))                .addSerializer(Date.class, new DateSerializer());        //注册功能模块 例如,可以添加自定义序列化器和反序列化器        this.reGISterModule(simpleModule);    }

4.定义消息转换器

import lombok.extern.slf4j.Slf4j;import org.springframework.context.annotation.Configuration;import org.springframework.Http.converter.HttpMessageConverter;import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;import org.springframework.web.servlet.config.annotation.WebmvcConfigurationSupport;import java.util.List;@Configuration@Slf4jpublic class WebMvcConfiguration extends WebMvcConfigurationSupport {        protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {        log.info("扩展消息转换器...");        //创建一个消息转换器对象        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();        //需要为消息转换器设置一个对象转换器,对象转换器可以将Java对象序列化为json数据        converter.setObjectMapper(new JacksonObjectMapper());        //将自己的消息转化器加入容器        converters.add(0,converter);    }}

5.调用测试

import com.example.result.Result;import org.springframework.web.bind.annotation.*;import java.util.Date;@RestControllerpublic class UserWebTest {    @GetMapping("/getUser")    public Result<?> aa(){        User user = new User();        user.setId(1L);        user.setName("jljlm");        user.setCreateDate(new Date());        user.setUpdateDate(new Date());        return Result.success(user);    }}

结果如下:
在这里插入图片描述

总结

@作者:加辣椒了吗?
简介:憨批大学生一枚,喜欢在博客上记录自己的学习心得,也希望能够帮助到你们!
在这里插入图片描述

来源地址:https://blog.csdn.net/weixin_44797539/article/details/132134340

--结束END--

本文标题: 日期格式化的最佳实践:如何在Java中处理日期格式化

本文链接: https://www.lsjlt.com/news/411326.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 日期格式化的最佳实践:如何在Java中处理日期格式化
    文章目录 前言一、使用format()方法二、使用注解@JsonFormat三、使用消息转换器1.定义用户类2.重写DateSerializer 方法3.定义对象映射器:4.定义消息转换器5....
    99+
    2023-09-17
    java 开发语言
  • 如何在VBS中格式化日期
    如何在VBS中格式化日期?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。核心代码currentTimeStr1 = CStr(Year(Now...
    99+
    2023-06-08
  • MySQL如何实现日期格式化
    这篇文章主要为大家展示了“MySQL如何实现日期格式化”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL如何实现日期格式化”这篇文章吧。日期格式化命令:s...
    99+
    2022-10-19
  • Flex如何实现日期格式化
    这篇文章主要介绍了Flex如何实现日期格式化,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Flex日期格式化在Flex中提供了非常丰富的Flex格式化功能,包括Flex货币格...
    99+
    2023-06-17
  • Java中SimpleDateFormat格式化日期的使用
    包含在Java的 java.text.SimpleDateFormat;包中 日期和时间格式由 日期和时间模式字符串 指定。在 日期和时间模式字符串 中,未加引号的字母 'A...
    99+
    2022-11-13
  • jquery中如何格式化显示日期
    在jquery中格式化显示日期的方法:1.新建html项目,引入jquery;2.创建div标签,设置id属性;3.添加button按钮,绑定onclick点击事件;4.通过new Date()函数获取当前时间,使用getFullYear(...
    99+
    2022-10-13
  • js中如何实现日期时间格式化
    这篇文章主要为大家展示了“js中如何实现日期时间格式化”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“js中如何实现日期时间格式化”这篇文章吧。js日期时间格式化将日期时间转换为指定格式,如:YY...
    99+
    2023-06-20
  • Java中如何对日期时间进行格式化
    这篇文章将为大家详细讲解有关Java中如何对日期时间进行格式化,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Java格式化日期时间的方法import java.text.Parse...
    99+
    2023-05-31
    java ava
  • DOS批处理下如何格式化日期字符串
    小编给大家分享一下DOS批处理下如何格式化日期字符串,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在Linux下,简单的一句话:date '+%Y%m%d...
    99+
    2023-06-08
  • Vueel-table组件如何实现将日期格式化
    目录vue el-table组件将日期格式化vue对时间进行格式化输出,以el-table为例解决方法总结vue el-table组件将日期格式化 项目需要实现一个将后端时间数据显示...
    99+
    2023-05-15
    Vue el-table组件 el-table将日期格式化 Vue el-table日期格式化
  • C#如何实现日期时间的格式化输出
    这篇文章主要讲解了“C#如何实现日期时间的格式化输出”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#如何实现日期时间的格式化输出”吧!DateTime被放在System命名空间下,在顶级语...
    99+
    2023-07-05
  • Redis序列化存储及日期格式的问题处理
    目录Redis序列化存储及日期格式可视化界面看到保存的数据是这样的这时候就需要我们自定义序列化方式Redis序列化LocalDateTime报错方案一:实体类日期字段添加注解方案二:...
    99+
    2022-11-12
  • 如何使用mybatis格式化查询出的日期
    小编给大家分享一下如何使用mybatis格式化查询出的日期,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!mybatis格式化查询出的日期1、格式符说明%Y:年 示例:2019%m:月 示例:08%d:日 示例:05%H:时...
    99+
    2023-06-20
  • 如何解决element-ui日期时间选择器的日期格式化问题
    小编给大家分享一下如何解决element-ui日期时间选择器的日期格式化问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!最近在...
    99+
    2022-10-19
  • 怎么在 ASP.NET Core 中使用内置的 Json 格式化日期
    这篇文章主要介绍“怎么在 ASP.NET Core 中使用内置的 Json 格式化日期 ”,在日常操作中,相信很多人在怎么在 ASP.NET Core 中使用内置的 Json 格式化日期 问题上存在疑惑,小...
    99+
    2022-10-19
  • 在PHP中如何将时间戳转化为日期和时间格式
    本篇内容介绍了“在PHP中如何将时间戳转化为日期和时间格式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是时间戳时间戳是指自1970年1...
    99+
    2023-07-05
  • DOS批处理下格式化日期字符串的方法有哪些
    这篇文章将为大家详细讲解有关DOS批处理下格式化日期字符串的方法有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。谈到日期字符串的输出,真是让人烦。在Linux下,简单的一句话:date '+%...
    99+
    2023-06-08
  • 如何在Java中使用SimpleDateFormat对日期格式进行转换
    这篇文章主要介绍了如何在Java中使用SimpleDateFormat对日期格式进行转换,编程网小编觉得不错,现在分享给大家,也给大家做个参考,一起跟随编程网小编来看看吧!Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向...
    99+
    2023-05-30
    java simpledateformat
  • MySQL 的 datetime等日期和时间处理SQL函数及格式化显示
    MySQL 的 datetime等日期和时间处理SQL函数及格式化显示 MySQL 时间相关的SQL函数: MySQL的SQL DATE_FORMAT函数: 用于以不同的格式显示日期/时间数据。 DATE_FORMAT(date...
    99+
    2023-09-16
    mysql 数据库 java Powered by 金山文档
  • Java中如何将日期数据类型的格式进行转换
    这篇文章给大家介绍Java中如何将日期数据类型的格式进行转换,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Date类:Date类型转String类型(以时间格式1970-01-01 01:01:01为例)//yyyy-...
    99+
    2023-05-31
    java ava 数据类
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作