Canlendar 和 Date

来源:互联网 发布:怎么用淘宝助理 编辑:程序博客网 时间:2024/05/22 10:42

Date

jdk1.0版本时能够表示时间的类只有Date类,但是因为无法实现国际化,在1.1时便有了Canlendar类来实现对时间和日期的操作。


Date: 代表当前时间

Date d  =  new  Date();

System.out.println(d);


由上面的结果可看出,得出的并不是我们想要的日期显示,而是多个时间元素组在一起的一个字符串。

但是,我们可以用java.text中的DateFormat


可使用parse将一个字符串转为date对象,即生成一个日期


DateFormat的构造是Protected 类型,所以不同包中的类是无法访问的。

那么就只能使用它所提供的一系列静态 getXXXInstance来创建对象

而且,当月份或者天数大于了标准的值时,它会自动进行转换。

parse方法会报出异常,


即,你所传入的字符串必须是可以转换成日期的。

另外,在DateFormat的子类SimpleDateFormat的构造中可以自定义日期的格式




获得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,后续的依次类推。




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


Calendar的构造的修饰符也是protected,所以只能使用提供的静态方法getXXXInstance来创建对象

 Calendar c = Calendar.getInstance();


Calendar显示出来的时间更加的复杂,是一个很长的字符串,里面有我们需要提取的任意内容。


Calendar提供了一系列的修改时间的方法。

也有相对的一系列取得时间的get方法



当然也有一系列的常量,下面列出了一部分

 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——星期几

获得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);

                   //星期几

                   int day = c2.get(Calendar.DAY_OF_WEEK);

                   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);



add方法

                   public abstract void add(int field,int amount)

该方法的作用是在Calendar对象中的某个字段上增加或减少一定的数值,增加是amount的值为正,减少时amount的值为负。

    例如在计算一下当前时间100天以后的日期,代码如下:

                   Calendar c3 = Calendar.getInstance();

                   c3.add(Calendar.DATE, 100);

                   int year1 = c3.get(Calendar.YEAR);

                   //月份

                   int month1 = c3.get(Calendar.MONTH) + 1;

                   //日期

                   int date1 = c3.get(Calendar.DATE);

                   System.out.println(year1 + "" + month1 + "" + date1 + "");

这里add方法是指在c3对象的Calendar.DATE,也就是日期字段上增加100,类内部会重新计算该日期对象中其它各字段的值,从而获得100天以后的日期,

            

after

  public boolean after(Object when)  

该方法的作用是判断当前日期对象是否在when对象的后面,如果在when对象的后面则返回true,否则返回false。例如:

                   Calendar c4 = Calendar.getInstance();

                   c4.set(2009, 10 - 1, 10);

                   Calendar c5 = Calendar.getInstance();

                   c5.set(2010, 10 - 1, 10);

                   boolean b = c5.after(c4);

                   System.out.println(b);

在该示例代码中对象c4代表的时间是20091010号,对象c5代表的时间是20101010号,则对象c5代表的日期在c4代表的日期之后,所以after方法的返回值是true

另外一个类似的方法是before,该方法是判断当前日期对象是否位于另外一个日期对象之前。



getTime方法

            public final Date getTime()

该方法的作用是将Calendar类型的对象转换为对应的Date类对象,两者代表相同的时间点。

类似的方法是setTime,该方法的作用是将Date对象转换为对应的Calendar对象,该方法的声明如下:

         public final void setTime(Date date)

转换的示例代码如下:

                  Date d = new Date();

                   Calendar c6 = Calendar.getInstance();

                   //Calendar类型的对象转换为Date对象

                   Date d1 = c6.getTime();

                   //Date类型的对象转换为Calendar对象

                   Calendar c7 = Calendar.getInstance();

                   c7.setTime(d);


Calendar对象和相对时间之间的互转

                            Calendar c8 = Calendar.getInstance();

                            long t = 1252785271098L;

                            //Calendar对象转换为相对时间

                            long t1 = c8.getTimeInMillis();

                            //将相对时间转换为Calendar对象

                            Calendar c9 = Calendar.getInstance();

                            c9.setTimeInMillis(t1);

在转换时,使用Calendar类中的getTimeInMillis方法可以将Calendar对象转换为相对时间。在将相对时间转换为Calendar对象时,首先创建一个Calendar对象,然后再使用Calendar类的setTimeInMillis方法设置时间即可。


0 0
原创粉丝点击