• 基于Java8开发接口时,处理Java8中的日期


    前言:在java8之前我们都是使用Date时间类,但是java8中提供了更好用的日期时间API,但是我们习惯了日期的格式为: yyyy-MM-dd HH:mm:ss,那在java8我们如何处理这样的日期格式呢?

    处理前端传过来的日期时间(转换为LocalDateTime/LocalDate/LocalTime)

    上代码:

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.web.bind.WebDataBinder;
    import org.springframework.web.bind.annotation.ControllerAdvice;
    import org.springframework.web.bind.annotation.InitBinder;
     
    import java.beans.PropertyEditorSupport;
    import java.time.LocalDate;
    import java.time.LocalDateTime;
    import java.time.LocalTime;
    import java.time.format.DateTimeFormatter;
     
    import static org.slf4j.LoggerFactory.*;
     
    /**
     * @Classname GlobalExceptionHandler
     * @Description 处理Java8的日期与时间
     */
    @ControllerAdvice
    public class GlobalExceptionHandler {
     
        private final static Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);
        @InitBinder
        protected void initBinder(WebDataBinder binder) {
            binder.registerCustomEditor(LocalDate.class, new PropertyEditorSupport() {
                @Override
                public void setAsText(String text) throws IllegalArgumentException {
                    setValue(LocalDate.parse(text, DateTimeFormatter.ofPattern("yyyy-MM-dd")));
                }
            });
            binder.registerCustomEditor(LocalDateTime.class, new PropertyEditorSupport() {
                @Override
                public void setAsText(String text) throws IllegalArgumentException {
                    log.info("=====initBinder=====的参数为:" + text);
                    setValue(LocalDateTime.parse(text, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
                }
            });
            binder.registerCustomEditor(LocalTime.class, new PropertyEditorSupport() {
                @Override
                public void setAsText(String text) throws IllegalArgumentException {
                    setValue(LocalTime.parse(text, DateTimeFormatter.ofPattern("HH:mm:ss")));
                }
            });
        }
    }
    

    将API中的时间以固定的格式返回

    @Configuration
    public class JacksonConfiguration {
    
    	@Bean(name = "objectMapper")
    	public ObjectMapper getObjectMapper() {
    		ObjectMapper om = new ObjectMapper();
    		om.registerModule(javaTimeModule()).registerModule(problemModule())
    				.registerModule(constraintViolationProblemModule());
    		return om;
    	}
    
    	@Bean
    	public JavaTimeModule javaTimeModule() {
    		JavaTimeModule javaTimeModule = new JavaTimeModule();
    		javaTimeModule.addSerializer(LocalDateTime.class,
    				new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
    		javaTimeModule.addSerializer(LocalDate.class,
    				new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
    		javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
    		javaTimeModule.addDeserializer(LocalDateTime.class,
    				new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
    		javaTimeModule.addDeserializer(LocalDate.class,
    				new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
    		javaTimeModule.addDeserializer(LocalTime.class,
    				new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
    		return javaTimeModule;
    	}
    
    	/* Jackson Afterburner module to speed up serialization/deserialization */
    	@Bean
    	public AfterburnerModule afterburnerModule() {
    		return new AfterburnerModule();
    	}
    
    	/* Module for serialization/deserialization of RFC7807 Problem. */
    	@Bean
    	ProblemModule problemModule() {
    		return new ProblemModule();
    	}
    
    	/*
    	 * Module for serialization/deserialization of ConstraintViolationProblem.
    	 */
    	@Bean
    	ConstraintViolationProblemModule constraintViolationProblemModule() {
    		return new ConstraintViolationProblemModule();
    	}
    }
    
  • 相关阅读:
    Gitblit搭建及Git协作开发流程
    Windows平台使用Gitblit搭建Git服务器图文教程
    gitblit搭建git服务器
    IntelliJ IDEA手动配置连接MySQL数据库
    如何去掉Intellij IDEA过多的警告 设置警告级别
    修改和重置WAMP的phpMyAdmin密码
    phpMyAdmin中config.inc.php设置密码和修改密码的方法
    Oracle、Mysql、SqlServer创建表和给表和字段加注释
    java注释规范
    JAVA基础补漏--static
  • 原文地址:https://www.cnblogs.com/kevliudm/p/11350558.html
Copyright © 2020-2023  润新知