Calendar日历类型常见方法(超详细)

Calendar类

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

Calendar对象

获取Calendar对象

Calendar是一个抽象类,不能直接new,而是通过一个静态方法获取到子类对象

Calendar calendar = Calendar.getInstance();//获取当前对象的日历对象
calender.set(2021, 2, 2); // 初始化

通过子类创建Calendar对象

因为Calendar类是抽象类无法实例化,但是它有实现类所以可以通过创建子类初始化Calendar对象

Calendar sun = new GregorianCalendar(2023, 1, 1);

Calendar实现类结构图
:
在这里插入图片描述

:

Calendar常见方法

返回值 方法名 描述
Date getTime() 返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象
void setTime(Date date) 给日历设置日期对象
long getTimeInMillis() 返回此 Calendar 的时间值,以毫秒为单位。
void setTimeInMillis(long millis) 给日历设置时间毫秒值
int get(int field) 获取日历中的某个字段信息
void set(int field, int value) 修改日历的某个字段信息
void add(int field, int amount) 为某个字段增加/减少指定的值
boolean before(Object when) 判断 时间是否在when之前
boolean after(Object when) 判断此 时间是否在when之后
int compareTo(Calendar) 比较两个 Calendar 对象表示的时间值
:

字段:

类型 字段名 描述
static int YEAR
static int MONTH
static int DATE
static int HOUR_OF_DAY
static int MINUTE
static int SECOND
static int MILLISECON 毫秒
static int DAY_OF_MONTH 指示一个月中的某天,和DATE一样
static int DAY_OF_WEEK 指示一个星期中的某天
static int DAY_OF_WEEK_IN_MONTH 指示当前月中的第几个星期
static int WEEK_OF_MONTH 指示当前月中的星期数
static int DAY_OF_YEAR 指示当前年中的天数
static int WEEK_OF_YEAR 指示当前年中的星期数

代码演示

get(),set(),add()

查增改字段
底层原理 :
会根据系统的不同时区来获取不同的日历对象,默认表示当前时间。
把会把时间中的纪元,年,月,日,时,分,秒,星期,等等的都放到一个数组当中
0: 纪元
1:年
2:月
3: 一年中的第几周
4:一个月中的第几周
5:一个月中的第几天(日期)
…·

//获取日历对象
        Calendar c = Calendar.getInstance();
        int year = c.get(1);
        int month = c.get(2);
        int date = c.get(5);
        System.out.println(year+"---"+month+"---"+date);

在这里插入图片描述
由上得出这样写是可行的,但是阅读性差,所以一般用字段形式…
细节:月份: 范围~11
如果获取出来的是。那么实际上是1月。
/星期:在老外的眼里,星期日是一周中的第一天
1(星期日)2(星期一)3(星期二)4(星期三)5(星期四)6(星期五)7(星期六)

		Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MARCH);//显示的是10,其实是11月
        int date = c.get(Calendar.DAY_OF_MONTH);
        System.out.println(year+"---"+month+"---"+date);

在这里插入图片描述
显示的是10,但实际上是11月
:

getTime(),setTime(Date date)


		//获取日历对象
        Calendar c = Calendar.getInstance();

        //转为date类
        Date date = c.getTime(); //Wed Nov 22 19:37:00 CST 2023

        //给日历设置日期对象
        c.setTime(date);
        

before(),after()

before()就是date1是否在date2之前,
而:after()就是date1是否在date2之后.

Date date1 = new Date();
Date date2 = new Date();

if (date1.before(date2)) {
    
    
    System.out.println("date1在date2之前");
} else if (date1.after(date2)) {
    
    
    System.out.println("date1在date2之后");
} else {
    
    
    System.out.println("date1和date2相等");
}

compareTo()

compareTo方法返回一个整数值,表示两个日期的比较结果。如果返回值小于0,则表示date1在date2之前;如果返回值大于0,则表示date1在date2之后;如果返回值等于0,则表示两个日期相等。

Date date1 = new Date();
Date date2 = new Date();

int result = date1.compareTo(date2);

if (result < 0) {
    
    
    System.out.println("date1在date2之前");
} else if (result > 0) {
    
    
    System.out.println("date1在date2之后");
} else {
    
    
    System.out.println("date1和date2相等");
}

ok,以上就是关于Calendar日历类型的一些常见使用方法啦!
博主会持续更新诺~~

猜你喜欢

转载自blog.csdn.net/sweetser/article/details/134553350