概念
java.util.Claendar
日历类,抽象类,在Date类后出现的,替换掉了很多Date类中的方法,该类将所有的可能用到的时间信息封装为静态成员变量,通过类名.静态成员变量获取时间字段值
获取方式
由于Calendar类是一个抽象类,语言敏感性,Calendar类并不是直接创建对象来获取时间属性值,而是通过静态方法创建,返回子类对象。
Calendar c = Calendar.getInstance();
Calendar类的常用的成员方法:
get(int field);
Calendar类的get方法,用于获取日历字段的值,返回值的结果也是个int类型的值。
set(int field,int value);
讲给定的日历字段设置为给定的值
add(int field,int amount);
根据日历规则,为给定的日历字段添加或者是减去指定的时间量值
getTime();
返回的是一个表示Calendar时间值(从历元到现在的毫秒偏移量)的Date对象
静态属性
Calendar类的一些静态属性如年,月,日,星期并不是表示的是2022-3-8 12:12:12。 而是用于指代set,get方法到底是取什么类型的值。作为set,get方法的第一个参数,用来指定设置获取年月日。
不能通过静态属性来获取时间!
属性 | 说明 |
---|---|
Calendar.YEAR | 指代年 ,值为1 |
Calendar.MONTH | 指代月,值为2 |
Calendar.DAY_OF_MONTH | 指代本月的日,(月从0开始)值为5 |
Calendar.DAY_OF_WEEK | 指代本月的星期,(星期从星期天开始,算为1)值为7 |
Calendar.DAY_OF_YEAR | 指代本年相对于当前时间过去了多少天。 |
Calendar.HOUR | 十二小时制的小时 |
Calendar.HOUR_OF_DAY | 二十四小时制的小时 |
Calendar.MINUTE | 分 |
Calendar.SECOND | 秒 |
Calendar.MILLISECOND | 毫秒 |
成员方法的参数
int field
:日历类的字段,可以通过calendar类的静态成员变量获取
public static final int YARN = 1;
//年
public static final int MOUTH = 2;
//月
public static final int DATE = 5;
//月中的某一天(与day_of_mouth意义相同)
public static final int DAY_OF_MONTH;
//月中的第几天(与date意义相同)
public static final int HOUR = 10;
//时
public static final int MINUTE= 12;
//分
public static final int SECOND= 13;
//秒
获取Calendar日历的部分日期
//获取给定的字段值
public static void demo01(Calendar calendar) {
//使用public int get(int field)过去给定的日历字段值
//获取年份
int year = calendar.get(calendar.YEAR);
System.out.println(year);
//获取月份
int month = calendar.get(Calendar.MONTH) + 1;
System.out.println(month);//10 西方的日历 月份:0--11 东方1--12
//获取日期
int date = calendar.get(Calendar.DATE);
System.out.println(date);
//获取时
int hour = calendar.get(Calendar.HOUR);
System.out.println(hour);
//获取时的24小时制
int hours = calendar.get(Calendar.HOUR_OF_DAY);
System.out.println(hours);
}
将给定的日历字段设置为给定的值
//将给定的日历字段设置为给定的值
public static void demo02(Calendar calendar) {
//public void set(int field,int value)
/**
* int field:指定的日历字段(YEAR,MONTH,DATE....)
* int calue:给指定的日历字段设置值
*/
//把当前的年份设置为2050年
calendar.set(Calendar.YEAR, 2050);
//获取年份
int year = calendar.get(Calendar.YEAR);
System.out.println(year);
//把当前的月份设置为5月
calendar.set(Calendar.MONTH, 5);
//再次获取月份
int month = calendar.get(Calendar.MONTH);
System.out.println(month);
//设置日期为5日
calendar.set(Calendar.DATE, 5);
int date = calendar.get(Calendar.DATE);
System.out.println(date);
}
根据日历规则,为给定的日历字段添加或者减去指定的事件量
//根据日历规则,为给定的日历字段添加或者减去指定的事件量
public static void demo03(Calendar calendar) {
//public abstract void add(int field,int amount) 把指定的字段增加或者减少指定的值
/**
* 参数:
* int field:指定的日历字段(YEAR,MONTH,DATE....)
* int amount:增加或者减少指定的数量
* 正数:增加指定的数量
* 负数:减少指定的数量
*/
//把当前的年份增加两年
calendar.add(Calendar.YEAR, 2);
//把当前的月份减少3个月
calendar.add(Calendar.YEAR, -3);
//获取更改之后的年份和月份
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int date = calendar.get(Calendar.DATE);
System.out.println(year + "年" + month + "月" + date + "日");
}
获取一个Calendar日历对象对应的Date日期对象
//获取一个Calendar日历对象对应的Date日期对象
public static void demo04(Calendar calendar){
//public Date getTime() 把日历对象转换成日期对象
Date date = calendar.getTime();
System.out.println(date);//Mon Nov 30 15:15:05 CST 2020
//获取当前时间的时区
TimeZone timeZone = calendar.getTimeZone();
System.out.println(timeZone);
//获取当前时间的毫秒值
long timeInMillis = calendar.getTimeInMillis();
System.out.println("calendar日历对应的毫秒值:"+timeInMillis);
long timeMillis = System.currentTimeMillis();
System.out.println("这是System系统获取的毫秒值:"+timeInMillis);
Date date1 = new Date();
long time = date1.getTime();
System.out.println("这是date获取的毫秒值:"+time);
}