当前位置: 代码网 > it编程>编程语言>Java > Java Spring boot日期和时间统一设置三种方法

Java Spring boot日期和时间统一设置三种方法

2024年08月03日 Java 我要评论
方法一:配置文件修改修改配置文件配置application.yml:spring: # 配置日期格式化 jackson: date-format: yyyy-mm-dd hh:mm:ss

方法一:配置文件修改

修改配置文件配置application.yml:

spring:
  # 配置日期格式化
  jackson:
    date-format: yyyy-mm-dd hh:mm:ss  #时间戳统一转换为指定格式
    time-zone: gmt+8  # 时区修改为东8区

application.properties配置方式

spring.jackson.date-format=yyyy-mm-dd hh:mm:ss #时间戳统一转换为指定格式
spring.jackson.time-zone=gmt+8 # 时区修改为东8区

【注意】这里需要修改时区time-zone:数据库默认时区是格林尼治的时间,如果不设置,会比实际时间少8个小时(北京时间)。

方法二:在javabean实体类上加注解 

@jsonformat注解

@jsonformat注解用于属性或方法上,将date类型转换为我们需要的类型显示。

//在pattern上设置自己需要的格式
@jsonformat(pattern="yyyy-mm-dd hh:mm:ss")
private date createtime;

@datetimeformat注解

在需要进行日期格式转换的date属性上添加注解@datetimeformat(pattern = "需要转换的格式")

//注解将yyyy-mm-dd的形式转换为date数据
@datetimeformat(pattern = "yyyy-mm-dd hh:mm:ss")
private date birthday;

@temporal注解

通过@temporal注解,实现日期格式转换,它自带属性参数,比如:

@entity
public class myentity {
    @id
    private long id;

    // 得到yyyy-mm-dd日期格式
    @temporal(temporaltype.date)
    private date mydate;

    // 得到hh:mm:ss时间格式
    @temporal(temporaltype.time)
    private date mytime;

    // 得到yyyy-mm-dd hh:mm:ss时间格式
    @temporal(temporaltype.timestamp)
    private date mytimestamp;
    // other fields and methods
}

方法三:springboot配置全局日期格式转换器

package com.mooding.common.share.config;

import java.io.ioexception;
import java.text.simpledateformat;
import java.time.localdate;
import java.time.localdatetime;
import java.time.localtime;
import java.util.date;

import org.springframework.boot.autoconfigure.condition.conditionalonproperty;
import org.springframework.boot.jackson.jsoncomponent;

import com.fasterxml.jackson.core.jsongenerator;
import com.fasterxml.jackson.core.jsonparser;
import com.fasterxml.jackson.core.jsonprocessingexception;
import com.fasterxml.jackson.databind.deserializationcontext;
import com.fasterxml.jackson.databind.jsondeserializer;
import com.fasterxml.jackson.databind.jsonserializer;
import com.fasterxml.jackson.databind.serializerprovider;
import com.mooding.common.tools.utils.dateutils;

import lombok.sneakythrows;

/**
 * 类usercombinedserializer的实现描述
 *
 */
@jsoncomponent
@conditionalonproperty(prefix = dateformatconfig.prefix, name = "enabled", havingvalue = "true", matchifmissing = true)
public class dateformatconfig {

    public static final string prefix = "mooding.localdateformat";

    /**
     * 中划线
     */
    public static final string strikethrough = "-";

    public static class localdatetimejsonserializer extends jsonserializer<localdatetime> {
        @override
        public void serialize(localdatetime value, jsongenerator jsongenerator, serializerprovider serializerprovider)
            throws ioexception, jsonprocessingexception {
            jsongenerator.writestring(dateutils.fmt.yyyy_mm_dd_hh_mm_ss.format(value));
        }
    }

    public static class localdatetimejsondeserializer extends jsondeserializer<localdatetime> {
        @override
        public localdatetime deserialize(jsonparser jsonparser, deserializationcontext deserializationcontext)
            throws ioexception, jsonprocessingexception {
            return dateutils.fmt.yyyy_mm_dd_hh_mm_ss.parselocaldatetime(jsonparser.gettext());
        }
    }

    public static class datejsonserializer extends jsonserializer<date> {
        @override
        public void serialize(date value, jsongenerator jsongenerator, serializerprovider serializerprovider)
            throws ioexception, jsonprocessingexception {
            simpledateformat sdf = new simpledateformat(dateutils.fmt.yyyy_mm_dd_hh_mm_ss.getpattern());
            jsongenerator.writestring(sdf.format(value));
        }
    }

    public static class datejsondeserializer extends jsondeserializer<date> {
        @sneakythrows
        @override
        public date deserialize(jsonparser jsonparser, deserializationcontext deserializationcontext)
            throws ioexception, jsonprocessingexception {
            string text = jsonparser.gettext();
            if (text.contains(strikethrough)) {
                simpledateformat sdf = new simpledateformat(dateutils.fmt.yyyy_mm_dd_hh_mm_ss.getpattern());
                return sdf.parse(jsonparser.gettext());
            } else {
                // 时间戳转换
                return new date(long.parselong(text));
            }
        }
    }

    public static class localdatejsonserializer extends jsonserializer<localdate> {
        @override
        public void serialize(localdate value, jsongenerator jsongenerator, serializerprovider serializerprovider)
            throws ioexception, jsonprocessingexception {
            jsongenerator.writestring(dateutils.fmt.yyyy_mm_dd.format(value));
        }
    }

    public static class localdatejsondeserializer extends jsondeserializer<localdate> {
        @override
        public localdate deserialize(jsonparser jsonparser, deserializationcontext deserializationcontext)
            throws ioexception, jsonprocessingexception {
            return dateutils.fmt.yyyy_mm_dd.parselocaldate(jsonparser.gettext());
        }
    }

    public static class localtimejsonserializer extends jsonserializer<localtime> {
        @override
        public void serialize(localtime value, jsongenerator jsongenerator, serializerprovider serializerprovider)
            throws ioexception, jsonprocessingexception {
            jsongenerator.writestring(dateutils.fmt.hh_mm_ss.format(value));
        }
    }

    public static class localtimejsondeserializer extends jsondeserializer<localtime> {
        @override
        public localtime deserialize(jsonparser jsonparser, deserializationcontext deserializationcontext)
            throws ioexception, jsonprocessingexception {
            return dateutils.fmt.hh_mm_ss.parselocaltime(jsonparser.gettext());
        }
    }

}

总结

到此这篇关于java spring boot日期和时间统一设置三种方法的文章就介绍到这了,更多相关springboot日期和时间统一设置内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com