对list集合中的时间对象格式化

对list集合中的时间对象格式化

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

开发工具与关键技术:MyEclipse10,Java

作者:陈显其

撰写时间:2020年5月7日

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

有时候,查询的数据中的时间的格式不是我们想要的样子,可以用SimpleDateFormat类进行格式化时间,但是如果这个时间是放在集合里的,那么显示时间的时候就需要循环集合然后格式化,每一次在别的方法中用到都需要打一次循环,就很麻烦。像图中的这样

其实可以在创建类的属性的get方法中就可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
原生Spring没有直接支持Fastjson对返回的时间戳进行格式化的功能。然而,可以通过自定义一个ResponseBodyAdvice实现这一功能。 首先,需要创建一个步骤如下的类: ``` @ControllerAdvice public class DateSerializerAdvice implements ResponseBodyAdvice<Object> { private final Converter<String, Date> dateConverter; public DateSerializerAdvice() { this.dateConverter = new DateConverter(); } @Override public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) { return true; } @Override public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) { if (body == null) { return null; } if (body instanceof String) { return body; } if (body instanceof Collection) { Collection<Object> collection = (Collection<Object>) body; collection.forEach(this::serializeTimestampField); return collection; } serializeTimestampField(body); return body; } private void serializeTimestampField(Object object) { try { BeanInfo beanInfo = Introspector.getBeanInfo(object.getClass()); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor propertyDescriptor : propertyDescriptors) { Method readMethod = propertyDescriptor.getReadMethod(); Method writeMethod = propertyDescriptor.getWriteMethod(); if (readMethod == null || writeMethod == null) { continue; } if (readMethod.getReturnType() != Long.class) { continue; } if (writeMethod.getParameterTypes().length != 1 || writeMethod.getParameterTypes()[0] != Date.class) { continue; } Long timestamp = (Long) readMethod.invoke(object); if (timestamp == null) { continue; } Date date = dateConverter.convert(timestamp.toString()); writeMethod.invoke(object, date); } } catch (Exception e) { // 日志处理 } } } ``` 上述类通过实现ResponseBodyAdvice接口,并重写beforeBodyWrite方法实现了对返回的对象时间戳字段进行格式化。 在beforeBodyWrite方法,先判断返回值类型是否为字符串或者null,如果是则直接返回原值。 如果返回值类型为集合,则遍历集合的每个元素并调用serializeTimestampField方法进行处理。 serializeTimestampField方法,我们利用Java内省机制寻找对象类型为Long的字段,并检查其是否有对应的set方法。如果存在,则调用Fastjson提供的DateConverter将时间戳字符串转换为Date对象,并调用set方法设置格式化好的Date值。 最后,在Spring的配置文件,通过以下配置将我们的自定义类进行注册: ``` @Configuration public class DateSerializerConfig implements WebMvcConfigurer { @Autowired private DateSerializerAdvice dateSerializerAdvice; @Override public void addInterceptors(InterceptorRegistry registry) { } @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) { } @Override public void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> handlers) { handlers.add(dateSerializerAdvice); } @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { } } ``` 上述配置类,我们将自定义的类通过addReturnValueHandlers方法添加到返回值处理器即可。 通过以上步骤,我们就成功实现了原生Spring框架下对返回的时间戳进行格式化的功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值