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;

} ```

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

``` /**
* 营业额统计
* @param begin
* @param end
* @return
*/
@GetMapping("/turnoverStatistics")
@ApiOperation("营业额统计")
public Result 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);  
}

}

```

目录结构

image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值