Calendar类是抽象类,提供提起计算相关功能。GregorianCalendar是其具体子类。
// 当前时间
GregorianCalendar gregorianCalendar = new GregorianCalendar();
System.out.println(gregorianCalendar);
// 年,月,日,时,分,秒
Calendar calendar = new GregorianCalendar(2019, 6, 17, 21, 46, 39);
System.out.println(calendar);
// 获得年份
calendar.get(Calendar.YEAR);
// 获得月份
calendar.get(Calendar.MONTH); // 0-11表示对应月份,0代表一月,以此类推。注:使用SimpleDateFormat在String与Date类间互相转换时,无此规律。
// 获得星期
calendar.get(Calendar.DAY_OF_WEEK); // 1-7 1表示星期日,2表示星期一
// 获得日
calendar.get(Calendar.DATE); // 也可以使用Calendar.DAY_OF_MONTH
Calendar calendar1 = new GregorianCalendar();
calendar1.set(Calendar.YEAR, 2015);
// 日期计算
Calendar calendar2 = new GregorianCalendar();
// 当前日期向后100天
calendar2.add(Calendar.DATE, 100);
// 日期对象与时间对象的转化
Date date = calendar2.getTime();
Calendar calendar3 = new GregorianCalendar();
calendar3.setTime(new Date());
calendar3.getActualMaximum(Calendar.DATE); // 获得当月日期最大值
计算日期差
Calendar calendar1 = new GregorianCalendar();
Calendar calendar2 = new GregorianCalendar();
String replaceStr = "";
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd");
Date date1 = sdf.parse(dateStr1);
Date date2 = sdf.parse(dateStr2);
calendar1.setTime(date1);
calendar2.setTime(date2);
// 开始计算日期差
if (calendar1.after(calendar2)) {
Calendar temp = calendar1;
calendar1 = calendar2;
calendar2 = temp;
}
int days = calendar2.get(Calendar.DAY_OF_YEAR) - calendar1.get(Calendar.DAY_OF_YEAR);
while (calendar1.get(Calendar.YEAR) != calendar2.get(Calendar.YEAR)) {
days += calendar1.get(Calendar.DAY_OF_YEAR);
calendar1.add(Calendar.YEAR, 1);
}
网友评论