标签:
上篇介绍了使用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())));方法二也存在一些问题,它是将数据进行了两次转换,先转换为时间字符串,然后再转换为时间类型。我们可以发现这个过程就是:时间格式--时间字符串格式--时间格式。
遗留问题:
很容易看出,方法二是一个重复转换的过程,鉴于这样的转换,做了一个简单测试,发现了一些问题。测试如下:
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我们会发现,在使用转换前与转换后,他们的时间格式、类型都是一样的,但是转换前的无法直接写入数据库,而转换后的数据能写入。到目前为止,还是没能理解这两种的具体区别,有知道的可以给予指导啊。
小结:
时间格式问题可以说是我们经常要遇到的问题,当一个问题经常遇到时,我们就不能仅仅限于解决它,还得去探究问题的深层原因以及解决问题方法的原理。在反复学习中,不断的提升自己的认识程度,也锻炼自己的探究能力。
标签:
原文地址:http://blog.csdn.net/wpb92/article/details/52294867