您的位置:首页 > 数据库

用DateFormat处理时间格式,转化为timestamp形式存入数据库(以XXXX年XX月XX日为例)

2012-09-03 16:41 561 查看
今天遇到要用dateformat处理时间的情况,之前没有弄过,因为着急,刚开始没搞清楚原理就乱用,进入一个误区。为了让其他人不要像我一样误解这个类的用法做了个简答的总结。

要处理的问题:

我的情况是这样,我的程序会获得格式:XXXX年XX月XX日的日期,然后我要转化成XXXX-XX-XX形式,并存成timestamp形式时间信息存入数据库,为完成以时间排序的工作做好准备。

一、时间格式转换:

刚开始我获得了一个字符串,里面是一个日期:2012年10月1日。因为我想把这种格式用dateformat类解析成2012-10-01的形式,所以我在初始化一个格式的时候是这样的:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

然后我就弱弱用SimpleDateFormat的parse函数对我得到的字符串进行解析。然后用format妄想生成2012-10-01形式的结果。当时的代码是这样的:

format.format(format.parse(“2012年10月1日”));

。。。现在看来,我弱爆了!

后来仔细一看才发现parse和format功能类似一种互逆过程:

parse可以把传入的字符串按照format定义的格式从第一个字符开始解析,并转化成Date类型的时间。而format则可以把Date类型的时间数据转化成一个字符串。所以,上面的代码format.format(format.parse(“2012年10月1日”));仅仅想让他运行不报错,就要把format的格式定义成要处理的字符串中的时间格式:我们这里当然是应该定义成:

SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");这样就可以把传入的时间“2012年10月1日”在String和Date两种类型间转化。

那么我想要形如yyyy-MM-dd的时间怎么办呢?

只能手工把yyyy年MM月dd日形式的时间通过字符串操作转化成形如yyyy-MM-dd的String,然后定义SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");对转化后的新String进行操作。

总结:所以无论你要处理什么格式的时间,在定义format的时候一定要定义和传入的时间格式一致的形式。DateFormat只能进行在同一种时间格式里做Date和String类型的转化。想换种时间格式,就要自己手动提取和拼接字符串。如,我的代码是这样的:

String tmp = datetext.substring(0, 4) + "-" + datetext.substring(5, 7) + "-" + datetext.substring(8, 10)";

然后我对tmp进行parse的处理,就可以得到yyyy-MM-dd形式的Date类型时间。



二、从时间数据中获取Timestamp,并存入数据库

这里先说下Timestamp只有一种格式就是:yyyy-MM-dd hh:mm:ss.ff(这里最后的ff是毫秒)

我获取Timestamp代码如下:

Timestamp ts = Timestamp.valueOf(tmp);




然后在数据库操作的代码里用setTimestamp插入数据就行了:

String sqlurl = "jdbc:mysql://localhost:3306/CityMaps?user=root&password=123456&useUnicode=true&characterEncoding=utf8";
				connection = DriverManager.getConnection(sqlurl);

				PreparedStatement preparedStatement;
				preparedStatement = connection
						.prepareStatement("INSERT INTO News(type,title,summary,url,updatetime) VALUES(?,?,?,?,?)");
				preparedStatement.setString(1, type);
				preparedStatement.setString(2, title);
				preparedStatement.setString(3, "");
				preparedStatement.setString(4, url);
				preparedStatement.setTimestamp(5,updatetime);
				
				// 执行语句。
				preparedStatement.executeUpdate();


技术相关更多文章猛击:哇啦天堂论坛技术区
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐