java转换时间格式map_使用commons-beanutils把javabean转换成Map日期date不能自定义格式...

今天遇到一个功能需要将javabean的属性转换到map中,想到apache commons-beanutils的 BeanUtils工具类可能具有此功能。果然发现有个describe可以实现。试了下可以转换,但发现个问题,日期类型不能很好地转换,只能转换成Thu Sep 17 19:26:59 CST 2015这种格式,而我需要yyyy-MM-dd这种格式。翻了下源码发现有个日期转换器DateConverter,试了下注册到BeanUtilsBean中。

BeanUtilsBean beanUtilsBean = BeanUtilsBean.getInstance();

DateConverter converter = new DateConverter();

converter.setPattern("yyyy-MM-dd");

beanUtilsBean.getConvertUtils().register(new ConverterFacade(converter), java.util.Date.class);

但发现不起作用,继续阅读源码发现,它只用了StringConverter 一种转换器,代码如下。

public String convert(Object value) {

if (value == null) {

return null;

} else if (value.getClass().isArray()) {

if (Array.getLength(value) < 1) {

return (null);

}

value = Array.get(value, 0);

if (value == null) {

return null;

} else {

Converter converter = lookup(String.class);

return (converter.convert(String.class, value));

}

} else {

Converter converter = lookup(String.class);

return (converter.convert(String.class, value));

}

}

没办法只好重新覆盖这段代码,最终代码如下:

public class ExtConvertUtilsBean extends ConvertUtilsBean{

@Override

public String convert(Object value) {

if (value == null) {

return null;

} else if (value.getClass().isArray()) {

if (Array.getLength(value) < 1) {

return (null);

}

value = Array.get(value, 0);

if (value == null) {

return null;

} else {

Converter converter = lookup(String.class);

return (converter.convert(String.class, value));

}

} else {

Converter converter = null;

if(value instanceof java.util.Date ){

converter = lookup(java.util.Date.class);

}else{

converter = lookup(String.class);

}

return (converter.convert(String.class, value));

}

}

}

BeanUtilsBean beanUtilsBean = new BeanUtilsBean(new ExtConvertUtilsBean());

DateConverter converter = new DateConverter();

converter.setPattern(pattern);

beanUtilsBean.getConvertUtils().register(new ConverterFacade(converter), java.util.Date.class);

beanUtilsBean.describe(object);

至此可以实现日期自定义格式功能。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值