• 前端String类型绑定Date类型,返回前端正确格式的日期(全局配置)


    import org.springframework.core.convert.converter.Converter;
    import org.springframework.util.StringUtils;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    /**
     * @author lixiao
     * @date 2019/8/7 14:57
     */
    public class StringToDateConverter implements Converter<String, Date> {
    
        private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
        private static final String SHORT_DATE_FORMAT = "yyyy-MM-dd";
        private static final String DATE_FORMAT2 = "yyyy/MM/dd HH:mm:ss";
        private static final String SHORT_DATE_FORMAT2 = "yyyy/MM/dd";
        private static final String COLON = ":";
        private static final String BAR = "-";
        private static final String SLASH = "/";
    
        @Override
        public Date convert(String source) {
            if (StringUtils.isEmpty(source)) {
                return null;
            }
            source = source.trim();
            try {
                if (source.contains(BAR)) {
                    return getDate(source, DATE_FORMAT, SHORT_DATE_FORMAT);
                } else if (source.contains(SLASH)) {
                    return getDate(source, DATE_FORMAT2, SHORT_DATE_FORMAT2);
                }
            } catch (Exception e) {
                throw new RuntimeException(String.format("parser %s to Date fail", source));
            }
            throw new RuntimeException(String.format("parser %s to Date fail", source));
    
        }
    
        private Date getDate(String source, String dateFormat, String shortDateFormat) throws ParseException {
            SimpleDateFormat formatter;
            if (source.contains(COLON)) {
                formatter = new SimpleDateFormat(dateFormat);
            } else {
                formatter = new SimpleDateFormat(shortDateFormat);
            }
            return formatter.parse(source);
        }
    }
    import org.springframework.context.annotation.Configuration;
    import org.springframework.core.convert.support.GenericConversionService;
    import org.springframework.web.bind.support.ConfigurableWebBindingInitializer;
    import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter; import javax.annotation.PostConstruct; import javax.annotation.Resource; /** * @author lixiao * @date 2019/7/30 17:26 */ @Configuration public class MvcConfig implements WebMvcConfigurer { @Resource private RequestMappingHandlerAdapter handlerAdapter; /** * 在方法上加该注解会在项目启动的时候执行该方法,也可以理解为在spring容器初始化的时候执行该方法 */ @PostConstruct public void initEditableValidation(){ ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer) handlerAdapter.getWebBindingInitializer(); if (initializer != null) { if (initializer.getConversionService() != null) { GenericConversionService genericConversionService = (GenericConversionService) initializer.getConversionService(); genericConversionService.addConverter(new StringToDateConverter()); } } }
    }

    在项目中有一种特殊情况是,我们用@RequestBody来接收参数,这时候springboot会使用MappingJackson2HttpMessageConverter来格式化时间,我们还需针对这种情况特殊配置,只需在yml中配置jackson的date-format即可。另外,返回结果时,由于时区问题,可能差8小时,还需配上time-zone。

    spring:
      jackson:
        date-format: yyyy-MM-dd HH:mm:ss
        time-zone: GMT+8
  • 相关阅读:
    (资源搜索类)几个好用的磁力搜索网站
    百度网盘不限速,直接获取直链
    百度网盘偷偷更新,免费也终于不限速了
    ES6新特性之箭头函数与function的区别
    [亲测可用]BCompare文件比较对比工具4.3.4绿色版
    Autofac 动态获取对象静态类获取对象
    Linq to SQL 语法整理(子查询 & in操作 & join )
    小程序监听页面滚动开始和滚动结束
    C# Task.Run 和 Task.Factory.StartNew 区别
    Entity Framework Core必须牢记的三条引用三条命令
  • 原文地址:https://www.cnblogs.com/knightdreams6/p/11733654.html
Copyright © 2020-2023  润新知