Calendar抽象类

概念

在这里插入图片描述

java.util.Calendar日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为**静态成员变量,**方便获取。日历类就是方便获取各个时间属性的。

Calendar类是一个抽象类,里边提供了很多操作日历字段的方法(YEAR、MONTH、DAY_OF_MONTH、DATE、HOUR )

创建方式

Calendar为抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建Calendar类的子类对象。

  • 使用默认时区和语言环境获得一个日历
public static Calendar getInstance();

例如:

import java.util.Calendar;

public class Demo01Calendar {

    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();  // 多态
        System.out.println(c);  
    }
}

结果:

java.util.GregorianCalendar[time=1591496896738,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=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2020,MONTH=5,WEEK_OF_YEAR=24,WEEK_OF_MONTH=2,DAY_OF_MONTH=7,DAY_OF_YEAR=159,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=10,HOUR_OF_DAY=10,MINUTE=28,SECOND=16,MILLISECOND=738,ZONE_OFFSET=28800000,DST_OFFSET=0]

常用方法

  • 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:传递指定的日历字段(YEAR,MONTH…)
  • int value:给指定字段设定具体的值
  • int amount:增加/减少具体的值
    • 正数:增加
    • 负数:减少

Calendar类中提供很多成员常量,代表给定的日历字段:

字段值含义
YEAR
MONTH月(从0开始,可以+1使用)
DAY_OF_MONTH月中的天(几号)
HOUR时(12小时制)
HOUR_OF_DAY时(24小时制)
MINUTE
SECOND
DAY_OF_WEEK周中的天(周几,周日为1,可以-1使用)

注意

  1. 西方星期的开始为周日,中国为周一。
  2. 在Calendar类中,月份的表示是以0-11代表1-12月。
  3. 日期是有大小关系的,时间靠后,时间越大。

方法演示

get/set方法

  • get方法用来获取指定字段的值

代码:

import java.util.Calendar;
 /*
           public int get(int field):返回给定日历字段的值
           参数:传递指定的日历字段(YEAR,MONTH..)
           返回值:日历字段代表的具体值
    */
public class CalendarUtil {
    public static void main(String[] args) {
        // 创建Calendar对象
        Calendar cal = Calendar.getInstance();
        // 设置年 
        int year = cal.get(Calendar.YEAR);
        // 设置月
        int month = cal.get(Calendar.MONTH) + 1;
        // 设置日
        int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
        System.out.print(year + "年" + month + "月" + dayOfMonth + "日");
    }    
}

结果:

2019年11月24日
  • set方法用来设置指定字段的值

代码:

import java.util.Calendar;
/*
        public void set(int field, int value):将给定的日历字段设置为给定值。
        参数:
            int field:传递指定的日历字段(YEAR,MONTH..)
            int value:给指定字段设定具体的值

*/
public class Demo07CalendarMethod {
    public static void main(String[] args) {
       // 使用getInstance()方法获取Canledar对象
        Calendar c = Calendar.getInstance();

        // 设置年为9999
        c.set(Calendar.YEAR,9999);

        // 设置月为9
        c.set(Calendar.MONTH,9);  // 西方的月份是:0-11

        // 设置日为9
        c.set(Calendar.DATE,9);  // 作用相同

        // 同时设置年月日,可以使用set的重载方法
        c.set(8888,8,8);



        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);  // 西方的月份是:0-11
//        int date = c.get(Calendar.DAY_OF_MONTH);
        int date = c.get(Calendar.DATE);    // 作用相同
        System.out.println("今天是:"+ year +"年" + month +"月"+ date +"日");
    }
}

结果:

今天是:8888年8月8日

add方法

对指定日历字段的值进行加减操作。

如果第二个参数为正数则加上偏移量,如果为负数则减去偏移量。

代码:

import java.util.Calendar;
/*
        public abstract void add(int field, int amount):
        	根据日历的规则,为给定的日历字段添加或减去指定的时间量。
        参数:
            int field:传递指定的日历字段(YEAR,MONTH..)
            int amount:增加/减少具体的值
                正数:增加
                负数:减少
*/
public class Demo08CalendarMethod {
    public static void main(String[] args) {
       // 使用getInstance()方法获取Canledar对象
        Calendar c = Calendar.getInstance();

        // 把年增加2年
        c.add(Calendar.YEAR,2);  // 2021

        // 把月份减少3个月
        c.add(Calendar.MONTH,-3);  // 8

        // 把天数增加2天
        c.add(Calendar.DATE,2);  // 8
        
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);  // 西方的月份是:0-11
//        int date = c.get(Calendar.DAY_OF_MONTH);
        int date = c.get(Calendar.DATE);    // 作用相同
        System.out.println("今天是:"+ year +"年" + month +"月"+ date +"日"); 
    }
}

结果:

结果:今天是:2021年8月26日

getTime方法

Calendar中的getTime方法并不是获取毫秒时刻,而是拿到对应的Date对象

即**,把日历对象转换为日期对象**。

代码:

import java.util.Calendar;
import java.util.Date;
 /*
        public Date getTime():
        	返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
        把日历对象转换为日期对象
*/
public class Demo09CalendarMethod {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        // 而是拿到对应的Date对象
        Date date = cal.getTime();
        System.out.println(date); // Tue Jan 16 16:03:09 CST 2018
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值