「这是我参与11月更文挑战的第16天,活动详情查看:2021最后一次更文挑战」
前言
大家好,我是程序猿小白 gw_Gw,很高兴能和大家一起学习进步。
复制代码
以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。
摘要
本文主要介绍Calendar的实例化方法和方法的解读以及对set,get等方法详细介绍。最后通过实例来更加熟悉Calendar类的使用。
复制代码
建议点击传送门先看上篇:详解Cleandar日历类--上
1.2.2 getInstance(Locale aLocale)
static Calendar getInstance(Locale aLocale) 使用默认时区和指定语言环境获得一个日历。
复制代码
参数解析:
Locale
对象表示了特定的地理、政治和文化地区。Locale
类提供了一些方便的常量,可用这些常量为常用的语言环境创建 Locale
对象。例如为中国创建一个Locale对象:Locale.CHINA
实例展示:
Calendar calendar1 = Calendar.getInstance(Locale.CHINA);
复制代码
常见取值:
1.2.3 getInstance(TimeZone zone)
static Calendar getInstance(TimeZone zone) 使用指定时区和默认语言环境获得一个日历。
复制代码
参数解析:
TimeZone
是一个抽象类,表示时区偏移量,也可以计算夏令时。
通常,使用 getDefault
获取 TimeZone
,getDefault
基于程序运行所在的时区创建 TimeZone
。
也可以通过getTimeZone(String ID)
指定时区来获取TimeZone
,
getTimeZone(String ID实例展示:
TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");
复制代码
想要指定时区如果不知道地区的时区表示,百度就好。
具体使用:
Calendar calendar2 = Calendar.getInstance(timeZone);
复制代码
1.2.4 getInstance(TimeZone zone, Locale aLocale)
static Calendar getInstance(TimeZone zone, Locale aLocale) 使用指定时区和语言环境获得一个日历。
复制代码
了解了上面的方法,再来理解这个方法就很简单了。这里就不再对参数做解释。
实例展示:
TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");
Calendar calendar3 = Calendar.getInstance(timeZone,Locale.CHINA);
复制代码
2.3 Calendar类的方法
2.3.1 add()
abstract void add(int field, int amount)
根据日历的规则,为给定的日历字段添加或减去指定的时间量。(amount是正就是加,负就是减。)
复制代码
实例展示:
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.get(Calendar.MONTH));
calendar.add(Calendar.MONTH,1);
System.out.println(calendar.get(Calendar.MONTH));
calendar.add(Calendar.MONTH,-2);
System.out.println(calendar.get(Calendar.MONTH));
复制代码
2.3.2 set()
void set(int field, int value)
将给定的日历字段设置为给定值。
void set(int year, int month, int date)
设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。 设定年月日
void set(int year, int month, int date, int hourOfDay, int minute)
设置日历字段 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE 的值。 设定年月日时分
void set(int year, int month, int date, int hourOfDay, int minute, int second)
设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值。 设定年月日时分秒
复制代码
实例展示:
calendar.set(2019,11,2,11,5,5);
复制代码
2.3.3 get()
int get(int field) 返回给定日历字段的值。
复制代码
实例展示:
int month = calendar.get(Calendar.MONTH);
System.out.println(month);
复制代码
2.3.4 getTime()
Date getTime() 返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。
复制代码
Date time = calendar.getTime();
System.out.println(time);
复制代码
2.3.5 getTimeInMillis()
long getTimeInMillis() 返回此 Calendar 的时间值,以毫秒为单位。
复制代码
实例展示:
long timeInMillis = calendar.getTimeInMillis();
System.out.println(timeInMillis);
复制代码
2.3.6 setTime()
void setTime(Date date)
使用给定的 Date 设置此 Calendar 的时间。
复制代码
实例展示:
calendar.setTime(new Date());
System.out.println(calendar.getTime());
复制代码
2.3.7 setTimeInMillis()
void setTimeInMillis(long millis)
用给定的 long 值设置此 Calendar 的当前时间值。
复制代码
calendar.setTimeInMillis(1000000000000L);
System.out.println(calendar.getTime());
复制代码
3.4 Calendar类的应用实例
需求:统计2021年每个月的21号是星期日的天数。
public class CalendarTest {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
calendar.set(2021,0,1);
int count = 0;
for(int i = 0;i < 12; i++){
int month = calendar.get(Calendar.MO NTH);
//获取每个月有多少天
int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
//System.out.println(days);
for(int day = 1;day <= days; day++){
int weekDay = calendar.get(Calendar.DAY_OF_WEEK)+1;
if(day == 21 && weekDay == 7){
count++;
//System.out.println(day);
}
}
calendar.add(Calendar.MONTH,1);
}
System.out.println("符合条件的天数共有:"+count+"天!");
}
}
复制代码
结语
Calendar类我们就已经学完啦,希望能对读者有所帮助。如果其中有不正之处,欢迎掘友有们留言指正。
近期评论