首页 > 其他分享 >对日期进行格式化

对日期进行格式化

时间:2025-01-23 13:20:50浏览次数:1  
标签:jackson FORMAT DEFAULT 日期 import fasterxml com 格式化 进行

1.方法一

方法一:在日期属性上加注解@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

    /**
     * 创建时间
     */
   // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 不用原因无法统一对日期类型进行格式化处理
    private LocalDateTime createTime;

缺点:不用原因无法统一对日期类型进行格式

2.方法二

方法二:在WebMvcConfiguration 中扩展SpringMVC的消息转换器,统一对日期类型进行格式化处理

JacksonObjectMapper.java

package com.imut.oa.common;

import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
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 static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;

/**
 * 对象映射器:基于jackson将Java对象转为json,或者将json转为Java对象
 * 将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象]
 * 从Java对象生成JSON的过程称为 [序列化Java对象到JSON]
 */
public class JacksonObjectMapper extends ObjectMapper {

    public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
    //public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
    public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm";
    public static final String DEFAULT_TIME_FORMAT = "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_FORMAT)))
                .addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)))
                .addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
                .addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
                .addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)));

        //注册功能模块 例如,可以添加自定义序列化器和反序列化器
        this.registerModule(simpleModule);
    }
}

WebMvcConfiguration.java

package com.imut.oa.config;

import com.imut.oa.common.JacksonObjectMapper;
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
@Slf4j
public class WebMvcConfiguration extends WebMvcConfigurationSupport {
    //扩展消息转换器,统一对发送给前端的数据格式化
    @Override
    protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        log.info("扩展消息转换器");
        //创建消息转换器对象
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        //为消息转换器设置一个对象转换器,底层使用Jackson将Java对象转为json
        converter.setObjectMapper(new JacksonObjectMapper());
        //将自己的消息转换器对象追加到mvc框架的转换器集合中
        converters.add(0,converter);
    }
}

标签:jackson,FORMAT,DEFAULT,日期,import,fasterxml,com,格式化,进行
From: https://www.cnblogs.com/yousuobutong/p/18687587

相关文章

  • 折腾笔记[11]-使用rust进行直接法视觉里程计估计
    摘要使用rust实现了一个完整的直接法视觉里程计系统,能够通过比较两幅图像中的像素强度来估计相机的运动。它通过单层和多层的优化策略,结合图像金字塔和并行计算,提高了位姿估计的精度和效率。最终,代码输出了优化后的相机位姿变换矩阵,并可视化了投影点的位置。Thisisacomplete......
  • .NET开源强大的高级日期和时间库
    NodaTime是一个为.NET设计的开源高级日期和时间库,提供了比.NET框架自带的DateTime和DateTimeOffset更加丰富和可靠的日期时间操作功能。1.安装NodaTime首先,通过NuGet安装NodaTime包:Install-PackageNodaTime2.基本概念NodaTime提供了多种日期和时间类型,主......
  • 如何对网站首页的布局进行修改?
    修改网站首页布局通常涉及HTML和CSS代码。以下是详细的步骤:备份文件: 在进行任何修改之前,确保备份网站的所有文件和数据库。登录FTP或SSH: 使用FTP工具或SSH客户端连接到服务器,下载首页模板文件(通常命名为index.php或index.html)。编辑模板文件:使用文本编辑器打开模板文件。......
  • 请问如何对PHP网站首页模板进行有效的修改?
    修改PHP网站首页模板需要一定的编程知识,以下是详细的步骤:备份文件: 在进行任何修改之前,确保备份网站的所有文件和数据库。登录FTP或SSH: 使用FTP工具(如FileZilla)或SSH客户端连接到服务器,下载首页模板文件(通常命名为index.php或index.html)。编辑模板文件:使用文本编辑器(如Subl......
  • 如何通过FTP下载已上传的网站并进行修改
    如果您需要通过FTP下载已上传的网站并进行修改,可以按照以下步骤进行:获取FTP登录信息:联系您的网站托管提供商或管理员,获取FTP服务器的地址、用户名和密码。连接到FTP服务器:使用FTP客户端软件(如FileZilla、CuteFTP等),输入FTP服务器的地址、用户名和密码,连接到FTP服务器。下载网站......
  • 如何对开源PHP网站进行修改
    问题描述:如何对开源PHP网站进行修改。解决方法:了解开源项目:首先需要了解所使用的开源PHP网站的结构、功能和文档。通常,开源项目会提供详细的文档和说明,帮助用户了解如何进行定制和修改。确定修改内容:明确需要修改的具体内容,例如页面布局、功能模块、数据库操作等。找到相关文......
  • 如何对PHP网站的页面进行修改密码操作
    问题描述:如何对PHP网站的页面进行修改密码操作。解决方法:确定密码修改功能的实现方式:首先需要确定PHP网站的密码修改功能是通过表单提交、API调用还是其他方式实现的。表单提交方式:如果密码修改是通过表单提交实现的,找到对应的HTML文件,通常是change-password.php或profile.php......
  • 如何对ThinkPHP网站进行修改
    问题描述:如何对ThinkPHP网站进行修改。解决方法:确定修改内容:明确需要修改的具体内容,例如页面布局、功能模块、数据库操作等。找到相关文件:根据修改内容,找到对应的ThinkPHP文件。通常,控制器文件位于application目录下的相应模块中,模型文件位于application目录下的model文件夹中......
  • 使用 Java 和 Tesseract 进行验证码识别
    验证码(CAPTCHA)在网站和应用中被广泛用作防止自动化操作的验证机制。如果想要识别验证码,可以借助OCR(光学字符识别)技术实现自动识别。本文将介绍如何使用Java和TesseractOCR引擎来实现验证码的识别。环境准备安装TesseractOCR引擎Tesseract是一个开源的OCR引擎,必须......
  • 如何使用Git进行版本控制?
    如何使用Git进行版本控制?Git是一种分布式版本控制系统,广泛用于软件开发中,以便开发者能够更高效地管理代码版本。使用Git能够帮助团队协作、跟踪代码变化、并在必要时进行回滚。本文将为你详细介绍如何使用Git进行版本控制,并附带一些实用的资源链接,帮助你更好地了解和应用Git。......