时间日期类(2)——Calendar类

一、Calendar类

日历类

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

导包:import java.util.Calendar;
Calendar 是一个抽象类,无法直接创建对象,我们可以创建其子类对象
也可以使用Calendar 的一个静态方法getInstance();该方法返回值是其子类对象。

  1. 成员方法
static Calendar getInstance() 
          //使用默认时区和语言环境获得一个日历。作用:创建对象时使用
abstract  void add(int field, int amount) 
          //根据日历的规则,为给定的日历字段添加或减去指定的时间量amount。 
int get(int field) 
          //返回给定日历字段的值。 
void set(int field, int value) 
          //将给定的日历字段设置为value值。 
 void set(int year, int month, int date) 
          //设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。 
String toString() 
          //返回此日历的字符串表示形式。 
Date getTime() 
          //返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。 
  1. 创建对象方法
    Calendar类的创建对象方法比较特殊,必须使用 Calendar.getInstance();创建对象
Calendar calendar = Calendar.getInstance();
        System.out.println(calendar);//会显示所有日历字段的值
        /*结果为:
        java.util.GregorianCalendar[time=1596254009370,areFieldsSet=true,areAllFieldsSet=true,   
        lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT+08:00",offset=28800000,dstSavings=0,useDaylight=false,transitions=0,  
        lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2020,MONTH=7,WEEK_OF_YEAR=31,WEEK_OF_MONTH=1,  
        DAY_OF_MONTH=1,DAY_OF_YEAR=214,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=11,HOUR_OF_DAY=11
        MINUTE=53,SECOND=29,MILLISECOND=370,ZONE_OFFSET=28800000,DST_OFFSET=0]*/
  1. filed字段值:
    可以使用Calendar的静态成员变量获取
filed字段含义
YEAR
MONTH月(0-11)西方的月份
DAY_OF_MONTH月中的第几天
HOUR
MINUTE
SECOND
  1. 示例:
package linxu.day13;
//导包
import java.util.Calendar;
import java.util.Date;

public class demomain {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        int month=calendar.get(Calendar.MONTH);//西方的月份是0-11,所以8月份会显示为7月
        System.out.println(month);
        calendar.add(Calendar.MONTH,3);//加上3个月
        month=calendar.get(Calendar.MONTH);
        System.out.println(month);

        Date date=calendar.getTime();
        System.out.println(date);

        calendar.set(Calendar.DAY_OF_MONTH,3);
        month=calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(month);//通过get,set获取的字段值是日历时间
        System.out.println(Calendar.DAY_OF_MONTH);
        //直接打印DAY_OF_MONTH显示的是这个字段的下标值,
        // 在常量表中定义如下:public static final int DAY_OF_MONTH 5
        //可以看出,这是一个常量值,不可改变。
        //我们可以这样理解:calendar.set(Calendar.DAY_OF_MONTH,3);
        // 近似等于calendar[DAY_OF_MONTH]=3;理解为数组下标固定,我们改变的是数组的值

        calendar.set(2018,6,3);
        Date date1=calendar.getTime();
        System.out.println(date1);
    }
}
/*打印结果:
7
10
Mon Nov 02 09:30:00 GMT+08:00 2020
3
5
Tue Jul 03 09:30:00 GMT+08:00 2018*/
©️2020 CSDN 皮肤主题: 岁月 设计师:pinMode 返回首页