主页 > 知识库 > 网络编程 > JSP/Java >

JAVA的Date类与Calendar类

来源:中国IT实验室 作者:佚名 发表于:2013-07-11 10:59  点击:
Date类 在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理。这里简单介绍一下Date类的使用。 1、使用Date类代表当前系统时间 Date d = new Date(); System.out.pr
 Date类  在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理。这里简单介绍一下Date类的使用。
  1、使用Date类代表当前系统时间
  Date d = new Date();
  System.out.println(d);
  使用Date类的默认构造方法创建出的对象就代表当前时间,由于Date类覆盖了toString方法,所以可以直接输出Date类型的对象,显示的结果如下:
  Sun Mar 08 16:35:58 CST 2009
  在该格式中,Sun代表Sunday(周日),Mar代表March(三月),08代表8号,CST代表China Standard Time(中国标准时间,也就是北京时间(东八区))。
  2、使用Date类代表指定的时间
  Date d1 = new Date(2009-1900,3-1,9);
  System.out.println(d1);
  使用带参数的构造方法,可以构造指定日期的Date类对象,Date类中年份的参数应该是实际需要代表的年份减去1900,实际需要代表的月份减去1以后的值。例如上面的示例代码代表就是2009年3月9号。
  实际代表具体的年月日时分秒的日期对象,和这个类似。
  3、获得Date对象中的信息
  Date d2 = new Date();
  //年份
  int year = d2.getYear() + 1900;
  //月份
  int month = d2.getMonth() + 1;
  //日期
  int date = d2.getDate();
  //小时
  int hour = d2.getHours();
  //分钟
  int minute = d2.getMinutes();
  //秒
  int second = d2.getSeconds();
  //星期几
  int day = d2.getDay();
  System.out.println("年份:" + year);
  System.out.println("月份:" + month);
  System.out.println("日期:" + date);
  System.out.println("小时:" + hour);
  System.out.println("分钟:" + minute);
  System.out.println("秒:" + second);
  System.out.println("星期:" + day);
  使用Date类中对应的get方法,可以获得Date类对象中相关的信息,需要注意的是使用getYear获得是Date对象中年份减去 1900以后的值,所以需要显示对应的年份则需要在返回值的基础上加上1900,月份类似。在Date类中还提供了getDay方法,用于获得Date对 象代表的时间是星期几,Date类规定周日是0,周一是1,周二是2,后续的依次类推。
  4、Date对象和相对时间之间的互转
  Date d3 = new Date(2009-1900,3-1,10);
  long time = 1290876532190L;
  //将Date类的对象转换为相对时间
  long t = d3.getTime();
  System.out.println(t);
  //将相对时间转换为Date类的对象
  Date d4 = new Date(time);
  System.out.println(d4);
  使用Date对象中的getTime方法,可以将Date类的对象转换为相对时间,使用Date类的构造方法,可以将相对时间转换为Date类的对象。经过转换以后,既方便了时间的计算,也使时间显示比较直观了。
  Calendar类
  从JDK1.1版本开始,在处理日期和时间时,系统推荐使用Calendar类进行实现。在设计上,Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些,下面就介绍一下Calendar类的使用。
  Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。
  1、使用Calendar类代表当前时间
  Calendar c = Calendar.getInstance();
  由于Calendar类是抽象类,且Calendar类的构造方法是protected的,所以无法使用Calendar类的构造方法来创建对象,API中提供了getInstance方法用来创建对象。
  使用该方法获得的Calendar对象就代表当前的系统时间,由于Calendar类toString实现的没有Date类那么直观,所以直接输出Calendar类的对象意义不大。
  2、使用Calendar类代表指定的时间
  Calendar c1 = Calendar.getInstance();
  c1.set(2009, 3 - 1, 9);
  使用Calendar类代表特定的时间,需要首先创建一个Calendar的对象,然后再设定该对象中的年月日参数来完成。
  set方法的声明为:
  public final void set(int year,int month,int date)
  以上示例代码设置的时间为2009年3月9日,其参数的结构和Date类不一样。Calendar类中年份的数值直接书写,月份的值为实际的月份值减1,日期的值就是实际的日期值。
  如果只设定某个字段,例如日期的值,则可以使用如下set方法:
  public void set(int field,int value)
  在该方法中,参数field代表要设置的字段的类型,常见类型如下:
  Calendar.YEAR——年份
  Calendar.MONTH——月份
  Calendar.DATE——日期
  Calendar.DAY_OF_MONTH——日期,和上面的字段完全相同
  Calendar.HOUR——12小时制的小时数
  Calendar.HOUR_OF_DAY——24小时制的小时数
  Calendar.MINUTE——分钟
  Calendar.SECOND——秒
  Calendar.DAY_OF_WEEK——星期几
  后续的参数value代表,设置成的值。例如:
  c1.set(Calendar.DATE,10);
  该代码的作用是将c1对象代表的时间中日期设置为10号,其它所有的数值会被重新计算,例如星期几以及对应的相对时间数值等。
  3、获得Calendar类中的信息
  Calendar c2 = Calendar.getInstance();
  //年份
  int year = c2.get(Calendar.YEAR);
  //月份
  int month = c2.get(Calendar.MONTH) + 1;
  //日期
  int date = c2.get(Calendar.DATE);
  //小时
  int hour = c2.get(Calendar.HOUR_OF_DAY);
  //分钟
  int minute = c2.get(Calendar.MINUTE);
  //秒
  int second = c2.get(Calendar.SECOND);

有帮助
(0)
0%
没帮助
(0)
0%