做项目过程中肯定会碰到这样一个问题:在数据库中存的是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

引入标签:

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

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

<fmt:formatDate type="both" 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依赖 --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.2</version></dependency>

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

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

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

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

转载于:https://www.cnblogs.com/ggqzz/p/8438757.html

数据库日期时间显示在页面上格式错误的解决方案相关推荐

  1. jsp 图片上传到oracle,jsp上传图片到数据库(oracle),并能在页面上显示解决办法

    jsp上传图片到数据库(oracle),并能在页面上显示解决办法 jsp上传图片到数据库(oracle),并能在页面上显示解决办法 日期:2014-05-18 浏览次数:20341 次 jsp上传图片 ...

  2. 将html字符串转换成html标签显示到页面上(转)

    转自:将html字符串转换成html标签显示到页面上 当我们将html字符串放到页面上时,是无法直接显示出我们想要的内容,这时我们需要将字符串转化成为html标签(必须保证html字符串的格式正确) ...

  3. 您计算机的日期和时间不正确 因此无法,电脑显示时间不正确_电脑日期时间显示不对怎么办...

    摘要 腾兴网为您分享:电脑日期时间显示不对怎么办,掌上优云,游戏堂,优化大师,学堂里等软件知识,以及惠普打印机驱动1136,重庆网络干部学院,手机悬浮球,串口控制器,阿鲁表情包,advapi32.dl ...

  4. F5配置irule,使其系统在X个时间段提供服务,其余时间显示维护页面

    为什么80%的码农都做不了架构师?>>>    ##F5使系统在X个时间内不提供服务,只显示维护页面 when HTTP_REQUEST {   set curtime [clock ...

  5. 关于后端数据无法显示在页面上的问题

    问题出现:数据无法显示在页面上的问题 ,jsp中EL表达式在前端页面里被视为文本内容而显示出来 原因分析:可能是xml配置问题,不支持EL表达式 web.xml内容如下: <!DOCTYPE w ...

  6. C#表格table时间显示年月日时分秒格式设置

    C#表格table时间显示年月日时分秒格式设置 作者:张国军_Suger 开发工具与关键技术:Visual Studio 2015.C#..NET 在做C#项目是遇到的前端表格的时间处理问题,一般都是 ...

  7. 本页面上存在错误。Acrobat可能无法正确显示页面。请联系PDF文档的创建者来更正本页面上存在错误

    用acrobat 打开PDF文档提示"本页面上存在错误.--"         可能原因 一.pdf 文档没有使用 Acorbat 创建 二.pdf 修改者使用了与原 pdf 创建 ...

  8. oracle中如何格式化输出,【学习笔记】数据库日期时间格式化输出案例

    天萃荷净 分享一篇关于开发DBA在工作中常用到的日期时间格式化输出方法案例,含:mysql.sql server.oracle 3种数据库日期时间格式化输出 1.mysql数据库时间格式化输出 DAT ...

  9. 电子计算机软件设计图,带时间显示的掌上计算器设计(原理图+程序)

    带时间显示的掌上计算器概述: 单片机使用的是STC12C5A60S2,使用的是两节电池,靠ncp1402升压给整个电路供电,屏不用说啦,是12864,郁闷的是块头太大,囧!实时时钟使用的是DS1302 ...

最新文章

  1. 网络不通 从“本地连接”中找问题
  2. cocos2d-x的A*寻路
  3. 海思芯片对比选型_海思芯片的选型及特征参考说明大全
  4. python编辑器和终端_从python curses程序运行终端文本编辑器
  5. 【Python】Pycharm
  6. Maven对插件进行全局设置
  7. (转)RabbitMQ学习之安装
  8. 吴恩达机器学习(七)神经网络(反向传播)
  9. 流媒体服务器搭建详解
  10. Centos7中修改Hostname的方法
  11. 【2020CCPC秦皇岛:C】Cameraman(计算几何+思维+枚举)
  12. Cesium专栏-气象要素(温度、降水)色斑图制作
  13. C3P0连接池配置参数讲解
  14. AMD Ryzen Threadripper PRO 5000 series now available for the DIY market, 64 Zen3 cores for $6500
  15. resin 系统日志_resin日志
  16. python属于哪种类型_下列哪种类型是Python的列表类型?
  17. 看图学网络 一 网络的组成
  18. 信度和效度经典例子_信度和效度的区别
  19. js怎么实现hmacsha256_各种语言HMAC SHA256实现
  20. 你需要但是找不到的网站,其实不太想分享,有你想要想收藏的

热门文章

  1. Wireshark技巧-过滤规则和显示规则
  2. 关于sizeof在不同平台下的值
  3. h264 I帧的判断
  4. DateTime时间的比较问题
  5. 断言assert使用方法
  6. React开发(183):ant design 中treeSelect控制选中
  7. 前端学习(3035):vue+element今日头条管理-关于问题的一个解析
  8. 前端学习(3012):vue+element今日头条管理--axios的create字段
  9. [vue] vue自定义事件中父组件怎么接收子组件的多个参数?
  10. 前端学习(2885):如何短时间内实现v-for 搭建环境 业务模块设计