Java Calendar类

Posted 李亦华的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java Calendar类相关的知识,希望对你有一定的参考价值。

Calendar类概述

/**
 * java.util.Calendar类:是一个日历类
 * Calendar类是一个抽象类,里边提供了很多操作日历字段的方法
 *      如:YEAR、 MONTH、 DAY OF MONTH、HOUR
 *      
 * Calendar类无法直接创建对象使用,里边有一个静态方法叫 getInstance(),
 *      getInstance()方法返回了 Calendar类的子类对象
 *      static Calendar getInstance()使用默认时区和语言环境获得一个日历。
 */

Calender获取对象的方式

使用静态方法:Calendar.getInstance()

import java.util.Calendar;

public class Demo01Calendar {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar);
    }
}

Calender类的常用成员方法

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 static final int YEAR = 1public static final int MONTH = 2public static final int DATE=5                        一个月中的某一天
                       public static final int DAY_OF_ MONTH=5               一个月中的某一天
                       public static final int HOUR =10public static final int MINUTE =12public static final int SECOND =13                    秒

get() 方法:返回给定日历字段的值

 

import java.util.Calendar;

public class DemoCalendarGet {
    public static void main(String[] args) {
        // 首先使用getInstance()方法获取calendar对象
        Calendar calendar = Calendar.getInstance();

        // 调用get方法获取给定日历字段的值
        System.out.println(
                "年:" + calendar.get(Calendar.YEAR) + "
" +
                "月:" + calendar.get(Calendar.MONTH) + "
" +
                "一个月中的某一天:" + calendar.get(Calendar.DATE) + "
" +
                "一个月中的某一天:" + calendar.get(Calendar.DAY_OF_MONTH) + "
" +
                "时:" + calendar.get(Calendar.HOUR) + "
" +
                "分:" + calendar.get(Calendar.MINUTE) + "
" +
                "秒:" + calendar.get(Calendar.SECOND)
        );
    }
}
输出:
年:2020
月:0
一个月中的某一天:11
一个月中的某一天年:11
时:8
分:37
秒:31


说明:
当时日期、时间:2020年1月11日8时37分31秒
西方的月份:0-11
东方的月份:1-12

 

set() 方法:将给定的日历字段设置为给定值

 

import java.util.Calendar;

public class DemoCalendarSet {
    public static void main(String[] args) {
        // 首先使用getInstance()方法获取calendar对象
        Calendar calendar = Calendar.getInstance();
        System.out.println("
设置前");
        System.out.println(
                "年:" + calendar.get(Calendar.YEAR) + "
" +
                "月:" + calendar.get(Calendar.MONTH) + "
" +
                "一个月中的某一天:" + calendar.get(Calendar.DAY_OF_MONTH)
        );

        // 将年设置为 2008
        calendar.set(Calendar.YEAR, 2008);
        // 将月设置为 10
        calendar.set(Calendar.MONTH, 10);
        // 将日期设置为 3
        calendar.set(Calendar.DAY_OF_MONTH, 3);
        System.out.println("
分别设置后");
        System.out.println(
                "年:" + calendar.get(Calendar.YEAR) + "
" +
                "月:" + calendar.get(Calendar.MONTH) + "
" +
                "一个月中的某一天:" + calendar.get(Calendar.DAY_OF_MONTH)
        );

        // 同时设置年月日
        calendar.set(1998, Calendar.SEPTEMBER, 25);
        System.out.println("
同时设置后");
        System.out.println(
                "年:" + calendar.get(Calendar.YEAR) + "
" +
                "月:" + calendar.get(Calendar.MONTH) + "
" +
                "一个月中的某一天:" + calendar.get(Calendar.DAY_OF_MONTH)
        );
    }
}
输出结果:

设置前
年:2020
月:0
一个月中的某一天:11

分别设置后
年:2008
月:10
一个月中的某一天:3

同时设置后
年:1998
月:8
一个月中的某一天:25

 

add() 方法:根据日历的规则,为给定的日历字段添加或减去指定的时间量。

import java.util.Calendar;

public class DemoCalendarAdd {
    public static void main(String[] args) {
        // 首先使用getInstance()方法获取calendar对象
        Calendar calendar = Calendar.getInstance();
        System.out.println("
变化前");
        System.out.println(
                "年:" + calendar.get(Calendar.YEAR) + "
" +
                "月:" + calendar.get(Calendar.MONTH) + "
" +
                "一个月中的某一天:" + calendar.get(Calendar.DAY_OF_MONTH)
        );

        // 把年减少两年
        calendar.add(Calendar.YEAR, -2);
        // 把月份增加三个月
        calendar.add(Calendar.MONTH, 3);
        // 把日期增加10天
        calendar.add(Calendar.DAY_OF_MONTH, 10);
        System.out.println("
变化后");
        System.out.println(
                "年:" + calendar.get(Calendar.YEAR) + "
" +
                "月:" + calendar.get(Calendar.MONTH) + "
" +
                "一个月中的某一天:" + calendar.get(Calendar.DAY_OF_MONTH)
        );
    }
}
输出结果:

变化前
年:2020
月:0
一个月中的某一天:11

变化后
年:2018
月:3
一个月中的某一天:21

getTime() 方法:返回一个表示此 Calendar时间值(从历元到现在的亳秒偏移量)的Date对象。

import java.util.Calendar;

public class DemoCalendarGetTime {
    public static void main(String[] args) {
        // 首先使用getInstance()方法获取calendar对象
        Calendar calendar = Calendar.getInstance();

        // 返回一个表示calendar时间值(从历元到现在的亳秒偏移量)的Date对象。
        System.out.println(
                calendar.getTime()
        );
    }
}
输出结果:
Sat Jan 11 21:16:52 CST 2020

以上是关于Java Calendar类的主要内容,如果未能解决你的问题,请参考以下文章

求java中Calendar类的用法例子(并附每条注释)

java代码如何得到当前的12个月

Java Calendar类

java的Calendar类

整理Java基础知识--Calendar 类

Java-----日期类之Calendar类详解