解决时间输出格式带 T 带 000+00:00

本文介绍了在SpringBoot项目中两种设置日期格式的方法:一是全局修改application.yml中的Jackson配置,二是创建JsonDateSerialize自定义注解用于指定实体类的日期字段格式。

两种方法:

1. 全局修改

SpringBoot 项目在 application.yml 配置文件
spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8

来源:https://blog.youkuaiyun.com/Wxin0721/article/details/124365194

2. 增加注解

创建类JsonDateSerialize
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import org.apache.commons.lang3.time.DateFormatUtils;

import java.io.IOException;
import java.util.Date;

/**
 * @Description TODO 返回时间对象格式设置为'yyyy-MM-dd HH:mm:ss'
 * @Date 2023-08-24 10:27
 */
public class JsonDateSerialize extends JsonSerializer<Object>{

    @Override
    public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException,JsonProcessingException {
        if(value!=null){
            String r = null;
            if(value instanceof Date){
                r = DateFormatUtils.format((Date)value, "yyyy-MM-dd HH:mm:ss");
            }
            if(value instanceof String){
                r = DateFormatUtils.format(new Date(Long.valueOf(value.toString())), "yyyy-MM-dd HH:mm:ss");
            }
            if(value instanceof Long){
                r = DateFormatUtils.format(new Date((Long)value), "yyyy-MM-dd HH:mm:ss");
            }
            gen.writeObject(r);
        }else{
            gen.writeString("");
        }
    }
}

上述"yyyy-MM-dd HH:mm:ss" 可以设置一个实体类来替换

在对应实体字段上加入注解:

@JsonSerialize(using= JsonDateSerialize.class)
private Date createtime

来源:https://blog.youkuaiyun.com/weixin_42649985/article/details/131418566

为了去除类似于`T16:00:00.000+00:00`这样的ISO 8601时间字符串中的不需要部分,在Vue前端和Spring Boot后端的项目中有几种常见做法。 ### 后端 (Spring Boot) 如果你想要在数据从数据库读取到返回给前端这个过程中就处理掉这个问题,可以在实体类的时间字段上添加注解 `@JsonFormat` 来指定输出格式: ```java @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date date; ``` 这将确保当JSON序列化发生时,日期会按照设定好的模式转换成更易读的形式,并且不会包含那些额外的信息如'T'分隔符或时区偏移量等。 另外一种方式是在Controller层通过使用自定义的消息转换器来全局地控制所有Date类型的输出格式;或者直接对DTO对象里的属性做格式化的操作后再响应给客户端。 ### 前端 (Vue.js) 如果选择在前端解决此问题,则可以利用JavaScript提供的内置函数来进行简单的字符串替换、正则表达式匹配以及Moment.js库等功能强大的第三方插件来进行解析和显示友好的时间表示形式。 例如采用String原生API进行简单处理: ```javascript const isoTime = '2023-09-25T16:00:00.000Z'; // Replace T and Z with spaces, then trim extra zeros if needed. let formattedTime = isoTime.replace('T', ' ').replace(/\.\d{3}Z/, ''); console.log(formattedTime); // 输出结果:"2023-09-25 16:00:00" ``` 又或者是引入moment.js来做更加复杂的变换 ```html <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script> <script> var timeStr = moment("2023-09-25T16:00:00.000Z").format("YYYY-MM-DD HH:mm"); console.log(timeStr); </script> ``` 以上就是如何在vue结合springboot项目的场景下去除多余时间信息的一些方法了!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值