SpringBoot时间格式化的方法小结

 更新时间:2023年10月08日 08:58:06   作者:xyy123  
SpringBoot中的时间格式化通常指的是将Java中的日期时间类型转换为指定格式的字符串,或者将字符串类型的时间解析为Java中的日期时间类型,本文小编将给大家详细总结了SpringBoot时间格式化的方法,刚兴趣的小伙伴跟着小编一起来看看吧

方法一:属性上加注解

时间属性上添加注解:@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

@Data  
@Builder  
@NoArgsConstructor  
@AllArgsConstructor  
public class Employee implements Serializable {  
    private Long id;  
    private String username;  
    private String name;  
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")  
    private LocalDateTime createTime;  
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")  
    private LocalDateTime updateTime;  
}

方法二: 方法参数中添加注解@DateTimeForm

/**  
* 营业额统计  
* @param begin  
* @param end  
* @return  
*/  
@GetMapping("/turnoverStatistics")  
@ApiOperation("营业额统计")  
public Result<TurnoverReportVO> turnoverStatistics(  
    @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,  
    @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end){  
    log.info("营业额数据统计:{},{}",begin,end);  
    return Result.success(reportService.getTurnoverStatistics(begin,end));  
}

方法三:拓展spring mvc的消息转换器

重写父类方法extendMessageConverters

@Configuration  
@Slf4j  
public class WebMvcConfiguration extends WebMvcConfigurationSupport {  
    @Autowired  
    private JwtTokenAdminInterceptor jwtTokenAdminInterceptor;  
    @Autowired  
    private JwtTokenUserInterceptor jwtTokenUserInterceptor;  
    /**  
    * 注册自定义拦截器  
    * @param registry  
    */  
    protected void addInterceptors(InterceptorRegistry registry) {  
        log.info("开始注册自定义拦截器...");  
        registry.addInterceptor(jwtTokenAdminInterceptor)  
        .addPathPatterns("/admin/**")  
        .excludePathPatterns("/admin/employee/login");  
        registry.addInterceptor(jwtTokenUserInterceptor)  
        .addPathPatterns("/user/**")  
        .excludePathPatterns("/user/user/login")  
        .excludePathPatterns("/user/shop/status");  
    }  
    /**  
    * 设置静态资源映射,主要是访问接口文档(html、js、css)  
    * @param registry  
    */  
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {  
    log.info("开始设置静态资源映射...");  
    registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");  
    registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");  
    }  
    /**  
    * 扩展Spring MVC框架的消息转化器  
    * @param converters  
    */  
    protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {  
        log.info("扩展消息转换器...");  
        //创建一个消息转换器对象  
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();  
        //需要为消息转换器设置一个对象转换器,对象转换器可以将Java对象序列化为json数据  
        converter.setObjectMapper(new JacksonObjectMapper());  
        //将自己的消息转化器加入容器中  
        converters.add(0,converter);  
    }  
}

创建对象转换器JacksonObjectMapper

/**  
* 对象映射器:基于jackson将Java对象转为json,或者将json转为Java对象  
* 将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象]  
* 从Java对象生成JSON的过程称为 [序列化Java对象到JSON]  
*/  
public class JacksonObjectMapper extends ObjectMapper {  
    public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";  
    //public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";  
    public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm";  
    public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";  
    public JacksonObjectMapper() {  
    super();  
    //收到未知属性时不报异常  
    this.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);  
    //反序列化时,属性不存在的兼容处理  
    this.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);  
    SimpleModule simpleModule = new SimpleModule()  
    .addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))  
    .addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))  
    .addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)))  
    .addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))  
    .addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))  
    .addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)));  
    //注册功能模块 例如,可以添加自定义序列化器和反序列化器  
    this.registerModule(simpleModule);  
    }  
}

目录结构

以上就是SpringBoot时间格式化的方法小结的详细内容,更多关于SpringBoot时间格式化的资料请关注脚本之家其它相关文章!

相关文章

  • 使用@Cacheable缓存解决双冒号::的问题

    使用@Cacheable缓存解决双冒号::的问题

    这篇文章主要介绍了使用@Cacheable缓存解决双冒号::的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • maven安装与环境配置图文教程

    maven安装与环境配置图文教程

    这篇文章主要为大家详细介绍了maven安装与环境配置图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • SpringBoot使用MyBatis-Plus解决Invalid bound statement异常

    SpringBoot使用MyBatis-Plus解决Invalid bound statement异常

    这篇文章主要介绍了SpringBoot使用MyBatis-Plus解决Invalid bound statement异常,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • Mybatis反射核心类Reflector的实现

    Mybatis反射核心类Reflector的实现

    本文主要介绍了Mybatis反射核心类Reflector的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-11-11
  • Java调用明华RF读写器DLL文件过程解析

    Java调用明华RF读写器DLL文件过程解析

    这篇文章主要介绍了Java调用明华RF读写器DLL文件过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • java基础之Object类

    java基础之Object类

    这篇文章主要介绍了java基础之Object类 的相关资料,需要的朋友可以参考下
    2015-06-06
  • SpringBoot Maven Clean报错解决方案

    SpringBoot Maven Clean报错解决方案

    这篇文章主要介绍了SpringBoot Maven Clean报错解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • 解析Java的Jackson库中对象的序列化与数据泛型绑定

    解析Java的Jackson库中对象的序列化与数据泛型绑定

    这篇文章主要介绍了解析Java的Jackson库中对象的序列化与数据泛型绑定,Jackson通常被用来实现Java对象和JSON数据的相互转换功能,需要的朋友可以参考下
    2016-01-01
  • Java一些常见的出错异常处理方法总结

    Java一些常见的出错异常处理方法总结

    下面小编就为大家带来一篇Java一些常见的出错异常处理方法总结。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • MyBatis的JdbcType与Oracle、MySql数据类型一览表

    MyBatis的JdbcType与Oracle、MySql数据类型一览表

    这篇文章主要介绍了MyBatis的JdbcType与Oracle、MySql数据类型一览表,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01

最新评论