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日历类型的一些常见使用方法啦!
博主会持续更新诺~~