java8中java.time.LocalDateTime的json格式化

论坛 期权论坛 脚本     
匿名技术用户   2020-12-27 12:22   11   0

示例项目为spring boot构建

步骤1:在gradle或者maven中添加 jackson-datatype-jsr310 依赖库

例如gradle:

compile 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'

步骤2:

在实体类属性上加注解 @JsonFormat

com.fasterxml.jackson.annotation.JsonFormat;

到此为止已经可以将LocalDate、LocalTime、LocalDateTime等正确格式化并输出到view,但是如果要让Spring MVC接受到字符串自动转化为LocalDateTime类型的话还需以下一步操作。

步骤3:注册格式化日期的Bean

@Configuration
public class LocalDateTimeFormatConfig {

    @Bean
    public Formatter<LocalDate> localDateFormatter() {
        return new Formatter<LocalDate>() {
            @Override
            public String print(LocalDate object, Locale locale) {
                return object.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
            }

            @Override
            public LocalDate parse(String text, Locale locale) throws ParseException {
                return LocalDate.parse(text, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
            }
        };
    }

    @Bean
    public Formatter<LocalDateTime> localDateTimeFormatter() {
        return new Formatter<LocalDateTime>() {
            @Override
            public String print(LocalDateTime object, Locale locale) {
                return object.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
            }

            @Override
            public LocalDateTime parse(String text, Locale locale) throws ParseException {
                return LocalDateTime.parse(text, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
            }
        };
    }

    @Bean
    public Formatter<LocalTime> localTimeFormatter() {
        return new Formatter<LocalTime>() {
            @Override
            public String print(LocalTime object, Locale locale) {
                return object.format(DateTimeFormatter.ofPattern("HH:mm:ss"));
            }

            @Override
            public LocalTime parse(String text, Locale locale) throws ParseException {
                return LocalTime.parse(text, DateTimeFormatter.ofPattern("HH:mm:ss"));
            }
        };
    }

}

这里用的是java config的写法,使用xml注册也是可以的。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP