纠结了半下午的时间类性之间的转换,终于把它搞的有点清楚了,现附上我的总结及源代码如下:
时间类性之间的转换
注:要想将时、分、秒插入数据库中,时间对应的数据字段类型应该为:Timestamp。若为date,则只能插入年、月、日
1. 将String类型的Date转换为java.util.Date
String strDate = "2012-04-07";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Java.util.Date dt = sdf.parse(strDate);
System.out.println(dt); //输出结果: Sat Jan 07 00:04:00 CST 2012
System.out.println(sdf.format(dt)); //输出结果:2012-04-07
2. 将String类型的Date转换为java.sql.Date
字符串必须是:“yyyy-mm-dd”格式,否则抛异常
String strDate = “2012-04-07”;
Java.sql.Date sdt = java.sql.Date.valueOf(strDate);
//输出结果:2012-04-07
3. 将java.util.Date转换为String类型的Date
java.util.Date date = new java.util.Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = sdf.format(date);
System.out.println(time); //输出结果: 2012-04-07 15:01:57
4. 将java.sql.Date转换为String类型的Date
new java.sql.Date().toString(); 格式化日期转义形式 yyyy-mm-dd 的日期。
5. 将java.util.Date转换为java.sql.Date
java.util.Date date = new java.util.Date();
java.sql.Date sqldate = new java.sql.Date(date.getTime());
6. 将java.sql.Date转换为java.util.Date
java.sql.Date date = new java.sql.Date();
java.util.Date udate = new java.util.Date(date.getTime());
7. 将java.sql.Timestamp转换为java.util.Date
java.sql.Timestamp ts = new java.sql.Timestamp();
java.util.Date udate = new java.sql.Timestamp(ts.getTime());
8. 将java.util.Date转换为java.sql.Timestamp
java.util.Date date = new java.util.Date();
java.sql.Timestamp ts = new java.sql.Timestamp(date.getTime());
9. 将java.sql.Timestamp转换为String类型
String strDate = new java.sql.Timestamp().toString();
10. 将String类型的日期转换为java.sql.Timestamp
String strDate = “2012-04-07 16:22:48”;
java.sql.Timestamp ts = java.sql.Timestamp.valueOf(strDate);
测试的源代码如下:
package com.date;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
public class DateChange {
public static final String driver = "org.gjt.mm.mysql.Driver";
public static final String url = "jdbc:mysql://localhost:3306/test";
public static final String dbname = "root";
public static final String dbpass = "welcome";
public Connection conn = null;
public PreparedStatement pstmt = null;
public ResultSet rs = null;
public DateChange()throws Exception{
Class.forName(driver);
conn = DriverManager.getConnection(url,dbname,dbpass);
System.out.println("加载成功");
}
public void insertDate()throws Exception{
String sql = "insert into t_date(date)values(?)";
//java.util.Date udate = new java.util.Date();
String strDate = "2012-06-07 16:24:28";
java.sql.Timestamp ts = java.sql.Timestamp.valueOf(strDate);
pstmt = conn.prepareStatement(sql);
pstmt.setTimestamp(1, ts);
pstmt.executeUpdate();
pstmt.close();
conn.close();
}
public void selectDate()throws Exception{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//如果需要时间格式只是年、月、日,只需将查询上来的时间格式化即可
// 如:SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String sql = "select date from t_date";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while(rs.next()){
Timestamp ts = rs.getTimestamp("date");
String str = sdf.format(ts); //查询上来的时间需要进行格式化
System.out.println(str);
}
rs.close();
pstmt.close();
conn.close();
}
public static void main(String[] args)throws Exception{
new DateChange().insertDate();
new DateChange().selectDate();
}
}