• 【Hibernate】--时间格式处理


        上篇介绍了使用Hibernate来实现简单的数据插入,在这个过程中,我们需要注意的一个地方就是时间格式问题。之前在做SSH网上商城、DRP时也遇到过类似的问题,下面时间格式的转换做一个小总结。

        在进行插入时间格式数据时,视频实例中直接使用的New Date()方式获取当前时间。但是自己在demo运行过程中,提示时间格式存在问题,将该时间格式打印出来,发现使用的格式如下:    

    Tue Aug 23 21:59:41 CST 2016
        在网上商城部分遇到该问题,解决办法是将所有的datetime类型数据改为了string类型,然后将new Date()产生的时间转换为字符串。而这次同样遇到该问题,不想再修改数据格式,经过多次测试,找到如下方法:

        方法一:使用下面语句转换,存在的问题是将util.date转换成了sql.date类型。 

    new java.sql.Date(new java.util.Date().getTime());
        方法二:      

       SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");	
       //该user实体中的时间格式是util.date格式		
       user.setCreateTime(formatter.parse( formatter.format(new Date())));
        方法二也存在一些问题,它是将数据进行了两次转换,先转换为时间字符串,然后再转换为时间类型。我们可以发现这个过程就是:时间格式--时间字符串格式--时间格式。

       方法三:

         更换jar包,其实这个方法在学习SSH网上商城时就已经知道,只不过后来自己想用此方法时,发现当时跟我说此方法的人已经忘记换哪个。还好后来有人给我提示,换成mysql-connector-java-5.1.35.jar 版本的jar包(我的项目中使用的是3的版本)。     


        遗留问题:

          很容易看出,方法二是一个重复转换的过程,鉴于这样的转换,做了一个简单测试,发现了一些问题。测试如下:    

    package com.tgb.hibernate;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    public class test {
    
    	/**
    	 * 时间格式测试
    	 * @param args
    	 * @throws ParseException 
    	 */
    	public static void main(String[] args) throws ParseException {
    		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    		System.out.println(formatter.parse((formatter.format(new Date()))));//两次转换
    		System.out.println((formatter.parse((formatter.format(new Date())))).getClass());//两次转换后类型
    		System.out.println(new Date());//直接使用
    		System.out.println((new Date()).getClass());//new Date()类型
    	}
    
    }
    
        测试结果如下:      

    Tue Aug 23 21:59:41 CST 2016
    class java.util.Date
    Tue Aug 23 21:59:41 CST 2016
    class java.util.Date
        我们会发现,在使用转换前与转换后,他们的时间格式、类型都是一样的,但是转换前的无法直接写入数据库,而转换后的数据能写入。到目前为止,还是没能理解这两种的具体区别,有知道的可以给予指导啊。


        小结:

          时间格式问题可以说是我们经常要遇到的问题,当一个问题经常遇到时,我们就不能仅仅限于解决它,还得去探究问题的深层原因以及解决问题方法的原理。在反复学习中,不断的提升自己的认识程度,也锻炼自己的探究能力。 

  • 相关阅读:
    前端页面获取各类页面尺寸及坐标尺寸总结
    禁止微信内置浏览器调整字体大小
    区分浏览器,判断浏览器版本
    JavaScript
    ASP.NET MVC,Entity Framework 及 Code First
    循序渐进MongoDB V3.4(Ubuntu)
    Webpack
    RequireJS Step by Step
    JavaScript Object 及相关操作
    ES6 Promises
  • 原文地址:https://www.cnblogs.com/victor-grace/p/7253660.html
Copyright © 2020-2023  润新知