三网合一 营销型网站,网站建设鸿儒,怎么建网站做,网站开发与设计实训心得两千字做项目过程中肯定会碰到这样一个问题#xff1a;在数据库中存的是date或datetime类型的值#xff0c;从数据库里取出来遍历到页面上显示的是long类型或是GTM类型的日期时间。对于这个问题#xff0c;经过研究之后有以下结论#xff1a; 1.hibernate不会出现这样的问题…做项目过程中肯定会碰到这样一个问题在数据库中存的是date或datetime类型的值从数据库里取出来遍历到页面上显示的是long类型或是GTM类型的日期时间。对于这个问题经过研究之后有以下结论 1.hibernate不会出现这样的问题而mabatis则会出现这个问题。 2.数据库使用date类型的在页面上会显示long类型日期时间使用datetime类型的在页面上会显示GTM类型日期时间。 因为我用的是mysql数据库其他的数据库没测试过所以也不知道其他数据库是怎样的情况这里就针对mybatismysql数据库的情况来说一下我的解决方案吧。 通用解决方案将实体类中的参数从Date类型换成String类型一招治百病但是如果不想通过这种方式解决的童鞋请往下看~ 出现GTM时间格林时间的解决方案 方案一自定义从后台着手解决问题在后台把数据封装到一个Map里key为格式化之后的时间字符串然后在前台遍历map时取值为{map.key}就行了。ps:自定义的解决方式仅供参考~ 方案二推荐从前端着手解决问题之前没想到jstl标签库也可以格式化处理数据这一茬所以后来还是用的这种方案。本着能在前端解决的事绝不放在后台解决减轻服务器压力的原则我果断的选择了这一种方法~其实是这种方式简单想偷懒而已... 普通web项目引入jar包maven项目添加jstl依赖添加依赖可参考http://www.cnblogs.com/ggqzz/p/8421734.html 引入标签 % taglib prefixfmt urihttp://java.sun.com/jsp/jstl/fmt% 在遍历日期的位置添加代码 fmt:formatDate typeboth value${order.orderTime} / 出现Long类型时间的解决方案 方案一jstl标签库fmt标签这个上面讲过就不多说了。 因为这一个项目是用easyui完成的并且数据是由datagrid遍历出来的并没有使用el表达式所以我用的下面2种方式。 方案二使用datagrid自带formatter格式化列的属性可以直接定义函数然后在需要格式化的列上加上formatter函数名注意后面不需要加括号的属性就OK了。 自定义函数实际上这也是js格式化时间的一种方式 function formatDate(val) {var date new Date(val);var y date.getFullYear();var m date.getMonth() 1;var d date.getDate();return y - m - d; } 方式三推荐这种方式是使用jackson提供的注解个人感觉还是很好用的~ 先引入依赖 !-- jackson-databind依赖 --dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.9.2/version/dependency 在实体类Date类型属性上加上注解 JsonFormat(patternyyyy-MM-dd,timezoneGMT8)private Date openDate; 注意timezoneGMT8这个属性必须加上不然时区不对会导致日期的偏差这种方式也格式化不了GTM时间 以后如果有更多此问题的解决方案我也会继续更新的欢迎留言讨论~转载于:https://www.cnblogs.com/ggqzz/p/8438757.html