这里有LocalDateTime的坑来看看

作者: 大猪大猪 | 来源:发表于2018-01-24 11:24 被阅读732次

    在用新的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:完美

    相关文章

      网友评论

        本文标题:这里有LocalDateTime的坑来看看

        本文链接:https://www.haomeiwen.com/subject/brayaxtx.html