My97DatePicker显示日期的奇葩问题(后缀.0)

来源:互联网 发布:数据库实例是什么意思 编辑:程序博客网 时间:2024/06/07 00:26

问题描述

项目运行环境:
数据库=>mysql5.0
jdk=>jdk1.8
服务器=>tomcat8.0
之前做项目就遇到过这个问题,忘记记在哪里了,这次做项目又遇到了这个奇葩问题。因为My97DatePicker中的日期回显的时候不能直接用
Date类型的数据,所以我们就要先把Date类型的数据转换成String类型的,然后再传递到前台去展示。刚开始转换的代码如下

staff.setAccessionDateString(staff.getAccessionDate()==null?null:staff.getAccessionDate().toString());            staff.setDimissionDateString(staff.getDimissionDate()==null?null:staff.getDimissionDate().toString());

前台展示时候发现如下奇葩情况,最后会多一个.0的后缀
这里写图片描述

问题解决方案

  1. 后来经过调试发现如下图中红圈标示的,在Date类型toString后就变成了带后缀.0的。
    这里写图片描述

  2. 紧接着再往前调试,发现Date类型的变量值已经也是带.0后缀的了,如下图

这里写图片描述
3. 最后把sql拷贝出来执行了一下,发现格式是正常的如下图

这里写图片描述
经过以上调试分析,应该是在从数据库查询出来之后映射的时候发生了变化。
解决方案一:
就是在Date转换成String的时候直接用toString方法,我们用如下代码进行转换。

staff.setAccessionDateString(staff.getAccessionDate()==null?null:DateUtil.format(staff.getAccessionDate(), null));            staff.setDimissionDateString(staff.getDimissionDate()==null?null:DateUtil.format(staff.getDimissionDate(), null));

上述代码中的DateUtil的format方法具体实现如下

 public static String format(Date date, String... pattern) {        String myPattern = "yyyy-MM-dd HH:mm:ss";        if (date == null) {            return null;        }        if (pattern != null && pattern.length > 0) {            myPattern = pattern[0];        }        SimpleDateFormat df = new SimpleDateFormat(myPattern);        return df.format(date);    }

经过这么改造后发现这个奇葩的后缀.0就神奇的消失了。
目前暂时发现这一种解决方案,其他解决方案欢迎各位同仁来补充…..

0 0
原创粉丝点击