在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理
使用Date类的默认构造方法创建出的对象就代表当前时间,由于Date类覆盖了toString方法,所以可以直接输出Date类型的对象
由于Calendar类是抽象类,且Calendar类的构造方法是protected的,所以无法使用Calendar类的构造方法来创建对象,API中提供了getInstance方法用来创建对象。
使用该方法获得的Calendar对象就代表当前的系统时间,由于Calendar类toString实现的没有Date类那么直观,所以直接输出Calendar类的对象意义不大。
<pre name="code" class="java"> @Test public void testNewDate(){ Date date = new Date(); System.out.println(date); Calendar calendar = Calendar.getInstance(); Date date1 = calendar.getTime(); System.out.println(date1); }两者结果都为:Sun Mar 17 15:49:46 CST 2016在该格式中,Sun代表Sunday(周日),Mar代表March(三月),17代表17号,CST代表China Standard Time(中国标准时间,也就是北京时间(东八区))。
Date类设置指定时间的方法:Date date = new Date(2009-1900,3-1,9); //2009年3月9号。
实际代表具体的年月日时分秒的日期对象,和这个类似。
Calendar类设置指定时间的方法:
Calendar c1 = Calendar.getInstance();c1.set(2009, 3 - 1, 9); //2009年3月9日
如果只设定某个字段,例如日期的值,则可以使用如下set方法:public void set(int field,int value)例如:c1.set(Calendar.DATE,10);该代码的作用是将c1对象代表的时间中日期设置为10号,其它所有的数值会被重新计算,例如星期几以及对应的相对时间数值等。
Date类与Caledar类都中使用对应的get方法,可以获得相关的信息,但Date类这些方法已经不建议使用了。
@Test public void testDate(){ Date date = new Date(); //getYear获得是Date对象中年份减去1900以后的值,所以需要在返回值的基础上加上1900 int year = date.getYear() + 1900; //月份为实际的月份值减1,与Calendar类相同 int month = date.getMonth() + 1; System.out.println("年份:" + year); System.out.println("月份:" + month); System.out.println("日期:" + date.getDate()); System.out.println("小时:" + date.getHours()); System.out.println("分钟:" + date.getMinutes()); System.out.println("秒:" + date.getSeconds()); //Date类规定周日是0,周一是1,周二是2,后续的依次类推。 System.out.println("星期:" + date.getDay()); }
@Test public void testCalendar(){ Calendar calendar = Calendar.getInstance(); //月份为实际的月份值减1,与Date相同 int month = calendar.get(Calendar.MONTH) + 1; //在Calendar类中,周日是1,周一是2,周二是3,依次类推。 int day = calendar.get(Calendar.DAY_OF_WEEK) - 1; System.out.println("年份:" + calendar.get(Calendar.YEAR)); System.out.println("月份:" + month); System.out.println("日期(也就是多少号):" + calendar.get(Calendar.DATE)); System.out.println("24小时制的小时数:" + calendar.get(Calendar.HOUR_OF_DAY)); System.out.println("12小时制的小时数:" + calendar.get(Calendar.HOUR)); System.out.println("分钟:" + calendar.get(Calendar.MINUTE)); System.out.println("秒:" + calendar.get(Calendar.SECOND)); System.out.println("星期:" + day); }
使用Date对象中的getTime方法,可以将Date类的对象转换为相对时间;
使用Date类的构造方法,可以将相对时间转换为Date类的对象
@Test public void test(){ //将Date类的对象转换为相对时间 Date date = new Date(); long t1 = date.getTime(); System.out.println(t1); //将相对时间转换为Date类的对象 long time = 1290876532190L; Date d1 = new Date(time); System.out.println(d1); }
@Test public void test(){ //将Calendar对象转换为相对时间 Calendar calendar = Calendar.getInstance(); long t1 = calendar.getTimeInMillis(); System.out.println(t1); //将相对时间转换为Calendar对象 long time = 1252785271098L; Calendar c1 = Calendar.getInstance(); c1.setTimeInMillis(time); System.out.println(c1.getTime()); }
4.1、public boolean after(Object when)
该方法的作用是判断当前日期对象是否在when对象的后面,如果在when对象的后面则返回true,否则返回false
@Test public void testAfter(){ Date date = new Date(); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } Date date1 = new Date(); System.out.println(date1.after(date));//true }同理public boolean before(Date when):该方法是判断当前日期对象是否位于另外一个日期对象之前