mysql导表时间戳显示格式不对_数据库日期时间显示在页面上格式错误的解决方案...

做项目过程中肯定会碰到这样一个问题:在数据库中存的是date或datetime类型的值,从数据库里取出来遍历到页面上显示的是long类型或是GTM类型的日期时间。

对于这个问题,经过研究之后有以下结论:

1.hibernate不会出现这样的问题,而mabatis则会出现这个问题。

2.数据库使用date类型的在页面上会显示long类型日期时间,使用datetime类型的在页面上会显示GTM类型日期时间。

因为我用的是mysql数据库,其他的数据库没测试过,所以也不知道其他数据库是怎样的情况,这里就针对mybatis+mysql数据库的情况来说一下我的解决方案吧。

通用解决方案:将实体类中的参数从Date类型换成String类型,一招治百病,但是如果不想通过这种方式解决的童鞋请往下看~

出现GTM时间(格林时间)的解决方案:

方案一(自定义,从后台着手解决问题):在后台把数据封装到一个Map里,key为格式化之后的时间字符串,然后在前台遍历map时,取值为{map.key}就行了。ps:自定义的解决方式,仅供参考~

方案二(推荐,从前端着手解决问题):之前没想到jstl标签库也可以格式化处理数据这一茬,所以后来还是用的这种方案。本着能在前端解决的事绝不放在后台解决,减轻服务器压力的原则,我果断的选择了这一种方法~(其实是这种方式简单,想偷懒而已...)

普通web项目引入jar包,maven项目添加jstl依赖,添加依赖可参考:http://www.cnblogs.com/ggqzz/p/8421734.html

引入标签:

在遍历日期的位置添加代码

出现Long类型时间的解决方案:

方案一:jstl标签库fmt标签,这个上面讲过,就不多说了。

因为这一个项目是用easyui完成的,并且数据是由datagrid遍历出来的,并没有使用el表达式,所以我用的下面2种方式。

方案二:使用datagrid自带formatter(格式化列)的属性,可以直接定义函数,然后在需要格式化的列上加上formatter="函数名"(注意后面不需要加括号)的属性就OK了。

自定义函数,实际上这也是js格式化时间的一种方式:

functionformatDate(val) {

var date = newDate(val);

var y =date.getFullYear();

var m = date.getMonth() + 1;

var d =date.getDate();

return y + '-' + m + '-' +d;

}

方式三(推荐):这种方式是使用jackson提供的注解,个人感觉还是很好用的~

先引入依赖:

com.fasterxml.jackson.core

jackson-databind

2.9.2

在实体类Date类型属性上加上注解:

@JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")

private Date openDate;

注意:timezone="GMT+8"这个属性必须加上,不然时区不对会导致日期的偏差!这种方式也格式化不了GTM时间!

以后如果有更多此问题的解决方案我也会继续更新的,欢迎留言讨论~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值