zoukankan      html  css  js  c++  java
  • 前端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
  • 相关阅读:
    CSS盒子模型
    getContextPath、getServletPath、getRequestURI、request.getRealPath的区别
    MYSQL中的CASE WHEN END AS
    单点登录的精华总结
    git&github
    June 21st 2017 Week 25th Wednesday
    June 20th 2017 Week 25th Tuesday
    June 19th 2017 Week 25th Monday
    June 18th 2017 Week 25th Sunday
    June 17th 2017 Week 24th Saturday
  • 原文地址:https://www.cnblogs.com/knightdreams6/p/11733654.html
Copyright © 2011-2022 走看看