SpringBoot:解决日期转换问题和日期展示问题

x33g5p2x  于2021-12-17 转载在 Spring  
字(1.9k)|赞(0)|评价(0)|浏览(448)

本次我们解决问题:日期展示问题(返回的json中日期的格式是:“birthday”:“1988-08-07T15:00:00.000+0000”);需要转化成指定的格式(年月日时分秒格式)

1、问题如

2、解决方案

在配置中加入

#时间戳统一转换
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8

3、测试

日期转换的问题:向接口传入日期字符串,自动转换成date格式的对象

1、问题

2、接口的代码

/** * 测试日期 * @param joinDay * @return */
    @RequestMapping("date")
    public Date testDate(Date joinDay){
        return joinDay;
    }

3、解决方案

package com.streamyear.course.config;
 
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
 
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
/** * 全局页面传入日期字符串,自动转换成日期格式 */
@Component
public class DateConverterConfig implements Converter<String, Date> {
 
    private static final List<String> formarts = new ArrayList<>(4);
    static{
        formarts.add("yyyy-MM");
        formarts.add("yyyy-MM-dd");
        formarts.add("yyyy-MM-dd hh:mm");
        formarts.add("yyyy-MM-dd hh:mm:ss");
    }
 
    @Override
    public Date convert(String source) {
        String value = source.trim();
        if ("".equals(value)) {
            return null;
        }
        if(source.matches("^\\d{4}-\\d{1,2}$")){
            return parseDate(source, formarts.get(0));
        }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")){
            return parseDate(source, formarts.get(1));
        }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")){
            return parseDate(source, formarts.get(2));
        }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")){
            return parseDate(source, formarts.get(3));
        }else {
            throw new IllegalArgumentException("Invalid boolean value '" + source + "'");
        }
    }
 
    /** * 格式化日期 * @param dateStr String 字符型日期 * @param format String 格式 * @return Date 日期 */
    public  Date parseDate(String dateStr, String format) {
        Date date=null;
        try {
            DateFormat dateFormat = new SimpleDateFormat(format);
            date = dateFormat.parse(dateStr);
        } catch (Exception e) {
 
        }
        return date;
    }
 
}

4、测试

相关文章