今天在写代码时需要用到时间相关的类,一开始,数据库中存的数据类型是timestamp的,所以在Java中就使用了
Timestamp类型,但当调用Timestamp类型的方法时发现,它的很多方法都是deprecated,并且运行结果与预期有所差异。
Eclipse的自动提示我使用Calendar类来代替Timestamp类的使用。
private static void testCalendar() {
Timestamp ts = new Timestamp(System.currentTimeMillis());
Calendar cal = Calendar.getInstance();
cal.setTime(ts); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.println(sdf.format(ts)); Calendar cal2 = Calendar.getInstance();
cal2.set(Calendar.YEAR, 2015);
cal2.set(Calendar.MONTH, 2);
System.out.println(cal2.getActualMaximum(Calendar.DAY_OF_MONTH));
System.out.println(cal2.get(Calendar.YEAR) + "-"
+ cal2.get(Calendar.MONTH) + "-"
+ cal2.get(Calendar.DAY_OF_MONTH) + " " +
+ cal2.get(Calendar.HOUR_OF_DAY) + ":"
+ cal2.get(Calendar.MINUTE) + ":"
+ cal2.get(Calendar.SECOND));
}
通过调用Calendar的static方法得到一个Calendar实例,并且使用java.util.Date类型来进行初始化,
java.sql.Timestamp类型是Date类的子类,因而可以使用它来进行初始化操作。
这里有两点需要注意
1. Calendar的Month是从0开始计数的,也就是说一月是0,二月是1,....,十二月是11;
2. 使用SimpleDateFormat时,格式化字符串需要区分是12小时制还是24小时制
SimpleDateFormat twelvesSDF= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//12小时制 SimpleDateFormat TwentyfourSDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//24小时制