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

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

时间: 2024-10-06 06:02:29

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

获取当前时间显示在页面上并每秒刷新

<span id="clockTime"></span> <script> // 获取当前时间 //jQuery function startTime() { var clockTime = document.getElementById("clockTime"); var date = new Date(); var year = date.getFullYear(); //当前年份 var month = date.getMo

一个日期时间显示框的美化风格示例

一个日期时间显示框的美化风格示例,在网页上显示时间的一个美化示例,为时间显示框增加了一个漂亮的外框,这个外框是基于图片来美化的,,虽然现在都不主张用图片来美化了,不过看上去还真是挺漂亮的.www.srcfans.com为大家分享开源源码. 源码下载:一个日期时间显示框的美化风格示例

jsp页面上读取MySQL数据库datetime时间显示问题

mysql数据库中时间字段选用了datetime,如果通过java实现在jsp页面上显示时间为"年-月-日  时:分"等格式,那么如下代码就会有不同的结果! 实体类中两个变量: private Timestamp createDate;// 创建时间 private Date modifyDate;// 修改时间 接口实现类中给两个变量赋值: detail.setCreateDate(rs.getTimestamp("createDate")); detail.se

JSP通过AJAX获取服务端的时间,在页面上自动更新

1.在页面上引入js <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>Insert title here</title> <script src="../scripts/jquery.min.js" type="text/javascript">&l

使用WdatePicker时间插件限制页面上两个时间的前后范围

大多时候,开始时间&结束时间都是开始时间肯定不能大于结束时间,结束时间不能比开始时间还早吧,用WdatePicker插件选择时间的话可以很好的做好时间段的控制. 页面上的两个时间输入框: 开始时间: <input type="text" name="startDate" id="startDate" onclick="WdatePicker({dateFmt:'yyyy-MM-dd'})" /> 结束时间:

Linux日期时间显示输出

1.输出当前年月日 echo $(date +%F) 2014-02-21 2.输出当前时间(时分) echo $(date +%R) 12:45 3.输出当前时间(时分秒) echo $(date +%T) 12:52:51 4.输出星期 echo $(date +%A) 星期五 5.组合输出日期时间 5.1输出年月日 echo $(date +%Y/%m/%d) 2014/02/21 %Y参数: 年 %m参数: 月 %d参数: 日 5.2输出时分秒 echo $(date +%H:%M:%S

JSP读取Oracle数据库里的图片Blob字段并显示在页面上&lt;转&gt;

java代码:首先定义一个读取Oracle数据库的Blob字段并把字节写入一个输出流的方法. 1 public static void writeImg(OutputStream os) { 2 Connection con; 3 try { 4 con = ConnectionFactory.getConnection(); 5 Statement stmt = con.createStatement(); 6 ResultSet rs = stmt.executeQuery("select

TextView采用setText赋值之后不能立即显示在页面上的问题解决

在处理比较复杂的逻辑的时候,有时候setText之后而且确实保证里面是有值的,但是也不能保证页面就一定能够显示出来该值!settext仅仅是赋值而已,真正界面上的改变还是得靠刷新动作拿到cpu时间来执行.  所以说呢,若想直接显示出该值,就得单独开辟一个线程来执行赋值操作,这样就会直接显示出来了.

数据库日期时间函数

surdate(),current_date() 返回当前日期 curtime(),current_time 返回当前时间 now(),  current_timestamp(),  localtime(),  sysdate(),  localtimestamp() 返回当前日期和时间 year(d), 返回日期d中的年份值 month(d) 返回日期d中的月份值 day(d) 返回日期d中的日期值 monthname(d) 返回日期当中的月份名称, dayname(d) 返回日期d是星期几