从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和解析日期字符串。Date 中的相应方法已废弃。
1. String <=> java.util.Date
//String => java.util.Date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dstr = "2014-9-9 15:13:53";
java.util.Date date = sdf.parse(dstr);
//java.util.Date => String
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date date = new java.util.Date();
System.out.println(sdf.format(date));
2. java.util.Date <=> java.sql.Date
//java.util.Date => java.sql.Date
java.util.Date uDate = new java.util.Date();
java.sql.Date sDate = new java.sql.Date(uDate.getTime());
//java.sql.Date => java.util.Date
//很少用到这种转换,同上
3. String <=> java.sql.Date
// String => java.sql.Date
// 这个可以分成2种情况:
// (1)String类型的日期是yyyy-mm-dd格式的,可以直接用valueOf()方法进行转化,注意,非yyyy-mm-dd格式转化将抛出IllegalArgumentException错误!
java.sql.Date sDate = java.sql.Date.valueOf("2014-9-9");
// java.sql.Date => String
// (2) String类型非yyyy-mm-dd格式的,必须先转换成java.util.Date类型,再转换成java.sql.Date类型
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dstr = "2014-9-9 15:13:53";
java.util.Date uDate = sdf.parse(dstr);
java.sql.Date sDate = new java.sql.Date(uDate.getTime());
//java.sql.Date => String
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.sql.Date sDate = java.sql.Date.valueOf("2014-9-9");
System.out.println(sdf.format(sDate));
附录: