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常见方法

返回值方法名描述
DategetTime()返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象
voidsetTime(Date date)给日历设置日期对象
longgetTimeInMillis()返回此 Calendar 的时间值,以毫秒为单位。
voidsetTimeInMillis(long millis)给日历设置时间毫秒值
intget(int field)获取日历中的某个字段信息
voidset(int field, int value)修改日历的某个字段信息
voidadd(int field, int amount)为某个字段增加/减少指定的值
booleanbefore(Object when)判断 时间是否在when之前
booleanafter(Object when)判断此 时间是否在when之后
intcompareTo(Calendar)比较两个 Calendar 对象表示的时间值
:

字段:

类型字段名描述
static intYEAR
static intMONTH
static intDATE
static intHOUR_OF_DAY
static intMINUTE
static intSECOND
static intMILLISECON毫秒
static intDAY_OF_MONTH指示一个月中的某天,和DATE一样
static intDAY_OF_WEEK指示一个星期中的某天
static intDAY_OF_WEEK_IN_MONTH指示当前月中的第几个星期
static intWEEK_OF_MONTH指示当前月中的星期数
static intDAY_OF_YEAR指示当前年中的天数
static intWEEK_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日历类型的一些常见使用方法啦!
博主会持续更新诺~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值