java.util.Calendar类:日历类
- Calendar类是一个抽象类,里边提供了很多操作日历字段的方法(YEAR、MONTH、DAY_OF_MONTH、HOUR), Calendar类无法直接创建对象使用,里边有一个静态方法getInstance(),该方法返回了Calendar类的子类对象
static Calendar getInstance() //使用默认时区和环境语言获得一个日历
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
System.out.println(c);//java.util.GregorianCalendar[time=1592012221384,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2020,MONTH=5,WEEK_OF_YEAR=24,WEEK_OF_MONTH=2,DAY_OF_MONTH=13,DAY_OF_YEAR=165,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=2,AM_PM=0,HOUR=9,HOUR_OF_DAY=9,MINUTE=37,SECOND=1,MILLISECOND=384,ZONE_OFFSET=28800000,DST_OFFSET=0],说明java.util.GregorianCalendar[time=1592012221384,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2020,MONTH=5,WEEK_OF_YEAR=24,WEEK_OF_MONTH=2,DAY_OF_MONTH=13,DAY_OF_YEAR=165,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=2,AM_PM=0,HOUR=9,HOUR_OF_DAY=9,MINUTE=37,SECOND=1,MILLISECOND=384,ZONE_OFFSET=28800000,DST_OFFSET=0],说明Calendar类重写了ToString方法
}
Calendar类的成员方法:
- public int get(int field):返回给定日历字段的值
- public void set(int field, int value):将给定的日历字段设置为给定值
- public abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
- public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
成员方法的参数:
int field:日历类的字段,可以使用Calendar类的静态成员变量获取
public final static int YEAR = 1; 年
public final static int MONTH = 2; 月
public final static int WEEK_OF_YEAR = 3; 一年中的一天
public final static int WEEK_OF_MONTH = 4; 一月中的一周
public final static int DATE = 5; 天
…
/*
* public int get(int field):返回给定日历字段的值
* 参数:传递指定的日历字段(MONTH、YEAR、、、、)
* 返回值:日历字段代表具体的值
*/
private static void demo01() {
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
System.out.println(year);
int month = c.get(Calendar.MONTH);
System.out.println(month + 1);//西方的月份0-11,东方的月份 1-12
int date01 = c.get(Calendar.DATE);
System.out.println(date01);
int date02 = c.get(Calendar.DAY_OF_MONTH);
System.out.println(date02);
}
/*
* public void set(int field, int value):将给定的日历字段设置为给定值
* 参数:
* int field:传递指定的日历字段(MONTH、YEAR、、、、)
* int value:传递的字段设置的具体的值
*/
private static void demo02() {
Calendar c = Calendar.getInstance();
//设置年
c.set(Calendar.YEAR, 1999);
int year = c.get(Calendar.YEAR);
System.out.println(year);
//设置月
c.set(Calendar.MONTH, 10);
int month = c.get(Calendar.MONTH);
System.out.println(month);//西方的月份0-11,东方的月份 1-12
//设置天
c.set(Calendar.DATE, 18);
int date = c.get(Calendar.DATE);
System.out.println(date);
System.out.println("-----");
//同时设置年月日,可以使用set的重载方法
c.set(1990, 5, 4);
year = c.get(Calendar.YEAR);
System.out.println(year);
month = c.get(Calendar.MONTH);
System.out.println(month);//西方的月份0-11,东方的月份 1-12
date = c.get(Calendar.DATE);
System.out.println(date);
}
/*
* public abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
* 把指定的字段增加/减少指定的值
* 参数:
* int field:传递指定的日历字段(MONTH、YEAR、、、、)
* int amount:增加/减少的值
* 正数:增加
* 负数:减少
*/
private static void demo03() {
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, 2);
int year = c.get(Calendar.YEAR);
System.out.println(year);//2022
c.add(Calendar.MONTH, -3);
int month = c.get(Calendar.MONTH);//2
System.out.println(month);//西方的月份0-11,东方的月份 1-12
c.add(Calendar.DATE, 1);
int date = c.get(Calendar.DATE);
System.out.println(date);//14
}
/*
* public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
* 把日历对象,转换为日期对象
*/
private static void demo04() {
Calendar c = Calendar.getInstance();
Date date = c.getTime();
System.out.println(date);//Sat Jun 13 10:17:22 CST 2020
}