LocalDateTime - 的坑

在用新的Date API的时候大家有木有遇到很多坑,这里就告诉大家如何解决字符串转换LocalDateTime中的方法

java

使用方法

常规

String valueIn = "2018-01-24 10:13:52";
DateTimeFormatter DATETIME = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime ldt = LocalDateTime.parse(valueIn, DATETIME);
System.out.println(ldt);

输出结果

2018-01-24T10:13:52

梦想

但是我想要的结果是这样子才对

2018-01-24T10:13:52

转日期
那么我们可以这么写

DateTimeFormatter DATETIME = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");

如果后面带毫秒数呢?我们可以这么写

DateTimeFormatter DATETIME = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS");

SpringBoot 统一处理

以下配置处于SpringBoot上下文扫描范围中

@ControllerAdvice
public class VControllerAdvice extends ValidateControllerAdvice{
  private static final DateTimeFormatter LOCAL_DATE_TIME = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  private static final DateTimeFormatter LOCAL_DATE = DateTimeFormatter.ofPattern("yyyy-MM-dd");

    @InitBinder
    public void initBinder(WebDataBinder binder) {
        binder.registerCustomEditor(LocalDate.class, new PropertyEditorSupport() {
            @Override
            public void setAsText(String text) throws IllegalArgumentException {
                this.setValue(LocalDate.parse(text, LOCAL_DATE));
            }
        });
        binder.registerCustomEditor(LocalDateTime.class, new PropertyEditorSupport() {
            @Override
            public void setAsText(String text) throws IllegalArgumentException {
                this.setValue(LocalDateTime.parse(text, LOCAL_DATE_TIME));
            }
        });
    }
}

PS:完美


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容