java.util.Date
在除了SQL语句的情况下使用。java.util.Date 是java.sql.Date的父类。这是常用的表示时间的类,我们通常格式化或者得到当前时间都是用它。一般是日常日期字段。
java.sql.Date
针对SQL语句使用的,它只是包含日期而没有时间部分。java.util.Date 是java.sql.Date的子类。这个在读写数据库的时候用。一般是数据库中的时间字段。
java.sql.Timestamp
是一个与java.util.Data类有关的瘦包装器(thin wrapper),它允许JDBC API将该类标识为SQl TIMESTAMP值。它通过允许小数秒到纳秒界别精度的规范来添加保存SQL TIMESTAMP小数秒值得能力。Timestamp 也提供支持时间戳值得JDBC转义语法的格式化解析操作的能力。
计算Timestamp对象的精度是二者之一:
只有证书秒才会存储在java.util.Date组件中。小数秒(毫秒级)是独立存在的。传递的不是java.sql.Timestamp实例的对象时,Timestamp.equals(Object)方法永远不会返回true,因为日期的毫微秒组件是未知的,相对于java.util.Date.equals(Object)方法而言,Timestamp.equals(Object)方法是不对称的。此外,hashcode方法使用底层jaava.util.Date实现并因此在其计算中不包括毫微秒。鉴于Timestamp类和上述java.util.Date类之间的不同,建议代码一般不要讲Timestamp值为java.tuil.Date的实例。Timestamp和java.util.Date之间的继承关系实际上是实现继承,而不是类型继承。
Calendar
在java中是一个抽象类(Abstract Class), GregorianCalendar是它的一个具体实现。
1.Calendar的月份的起始值为0而不是1,所以要设置八月时,我们用7而不是8。即:calendar.set(Calendar.MONTH,7);
转换关系
Timestamp --> String
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//定义格式
Timestamp now = new Timestamp(System.currentTimeMillis());//获取系统当前时间
String str = df.format(now);
Data --> Timestamp
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//定义格式
String time = df.format(new Date());
Timestamp ts = Timestamp.valueOf(time);
java.util.Date <--> java.sql.Date通过getTime方法进行相互构建的。
Calendar --> Date
Calendar calendar = Calendar.getInstance();
java.util.Date date = calendar.getTime();
Date --> Calendar
calendar.setTime(date);
Calendar --> String
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = sdf.format(calendar.getTime());
String --> Calendar
String str = "2013-11-12";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(str);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
Date --> String
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = sdf.format(new Date());
String --> Date
String str = "2013-11-12";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(str);
String --> Timestamp
Timestamp ts = Timestamp.valueOf("2013-11-12 17:55:00");