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