版权声明:整理不易,转载请注明出处。 https://blog.csdn.net/linmengmeng_1314/article/details/83069714
数据库读取时间字段后面多了一个".0"
今天在做一个数据查询时,发现查出来的时间展示到jsp页面是上的时候多了一个“.0”,这个就很不正常了。
在查询之后才发现原来是数据库的字段格式是datetime
类型,而实体类使用的是String
类型,而datetime类型精确到毫秒,由于数据库里的值是:2018-09-19 17:59:51,只精确到秒,所以在查询出来的时候,mysql自动将毫秒位补了一个.0,我是这么理解的,不知道底层的原理是怎么回事。
解决办法:
- 在bean里的get方法里做格式化,也就是用String的replace方法,替换".0"为"" (我采用的就是这种)
public String getPay_time() {
String pay_time=this.pay_time.replace(".0","");
return pay_time;
}
-
把数据库里的时间改成date类型,如果不想改类型的话,在插入数据的时候,要保证这个时间字段的毫秒位不为零即可。
-
我看到网上有人说在页面渲染的时候格式化,我知道当查出来的是毫秒的时候,也就是时间显示时英文的,或者一串毫秒数字的,在jsp页面使用fmt标签,可以直接对数据进行格式化比如这样:
<td><fmt:formatDate type="both" value="${sa.regTime }" /></td>
,记得引入fmt标签库<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
。但是如果你跟我一样,bean中的时间类型是String的话,使用fmt标签会报错,提示不能讲String类型转换为Date类型。那么第一种方法或许会更方便些。