Java——Calendar

一、介绍

java.util.Calendar类表示日历,内含有各种时间信息,以及获取,计算时间的方法。Calendar本身是一个抽象类,有直接子类GregorianCalendar,使用时需要有日历对象,可以借助子类的构造方法创建对象,也可以通过Calendar提供的静态方法getInstance日历对象。

Calendar c = Calendar.getInstance();   // 静态方法

二、getInstance

public static Calendar getInstance()

getInstance是Calendar类中的一个静态方法,用来获取它的子类GregorianCalendar对象。

三、日历字段值

接下来的三个方法都有一个整数类型参数field,这里说明一下,field用来区分当前要获取或者操作的日期时间数据的。field数据的值使用Calendar中定义的整数常量来表示,如下

Calendar.YEAR   // 年
Calendar.MONTH   // 月
Calendar.DAY_OF_MONTH   // 月中的日期
Calendar.HOUR   // 小时
Calendar.MINUTE   // 分钟
Calendar.SECOND   // 秒
Calendar.DAY_OF_WEEK   // 星期

四、get

public int get(int field)   // field 是 日历字段值

get方法用来获取指定日历字段的时间值。

案例

public class CalendarTest {
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        System.out.println(year);   // 2021
    }
}

五、set

public void set(int field, int value)   // field是日历字段值,value是要修改的值

set方法用来设置指定字段的时间值。

案例,例如我想把时间改为2021年5月1号

public class CalendarTest {
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, 2021);
        c.set(Calendar.MONTH, 4);
        c.set(Calendar.DATE, 1);
        System.out.println(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE));   // 2021-5-1
    }
}

set方法也提供了许多重载方法,方便我们一次性设置年、月、日之类的操作,比如上面的代码可以简化为如下

public class CalendarTest {
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        c.set(2021,4,1);
        System.out.println(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE));   // 2021-5-1
    }
}

 

六、add

public void add(int field, int amount)   // field 是日历字段值,amount是增加/减少的值

add方法用来为某个字段增加/减少指定的值

案例,比如在当前日期的基础上增加一星期

public class CalendarTest {
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        c.set(2021,4,1);
        System.out.println(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE));   // 2021-5-1
        c.add(Calendar.WEEK_OF_YEAR, 1);
        System.out.println(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE));   // 2021-5-8
    }
}

这里也可以后退时间,只需改变的值设为负数即可,如下

public class CalendarTest {
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        c.set(2021,4,8);
        System.out.println(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE));   // 2021-5-8
        c.add(Calendar.WEEK_OF_YEAR, -1);
        System.out.println(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE));   // 2021-5-1
    }
}

  

上一篇:Java日期相关类:Date、SimpleDateFormat和Calendar类常用API代码示例


下一篇:关于用出生日期查询生日还有多少天的问题