-
初始化
1. 通过setTime()方法将Date类型的数据转化为Calendar类型,通过getTime()将Calendar转换为Date()类型;
Calendar cal =Calendar.getInstance();
cal.setTime(new Date());
System.out.println(cal.getTime());
SimpleDateFormat df =new SimpleDateFormat("y-M-d");
System.out.println(df.format(cal.getTime()));
/* 输出结果
Sat Sep 28 16:53:48 CST 2019
2019-9-28
*/
-
Calendar的set操作,可以设置时间到我们需要的操作的日期;
1. set(int field,int value) 列举field常用的字段(YEAR ,MONTH ,DAY_OF_MONTH(同 DATE) ,DAY_OF_YEAR )
cal.set(Calendar.YEAR, 2019);
cal.set(Calendar.MONTH, 11); //由于MONTH默认一月为0 ,所以设置为11时,结果为12
cal.set(Calendar.DAY_OF_MONTH, 12);
System.out.println(df.format(cal.getTime()));
//输出结果为:
2019-12-12
2. set(int year, int month, int date) 直接设置"年/月/日"
cal.set(2019, 11, 12);
System.out.println(df.format(cal.getTime()));
//输出结果:2019-12-12
3. 设置当前月最大日期和最小日期
//getActualMaximum 通过cal获取当前日期,getActualMaximum 通过月份得到最大日期
//getActualMinimum
cal.set(Calendar.YEAR, 2019);
cal.set(Calendar.MONTH, 11);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
System.out.println(df.format(cal.getTime()));
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
System.out.println(df.format(cal.getTime()));
//输出结果:
2019-12-31
2019-12-1
-
Calendar的add操作(对字段的加减)
- 对当前时间的,"年"月"日",分别进行加减操作
//打印当前时间:2019-9-28 System.out.println(df.format(cal.getTime())); cal.add(Calendar.YEAR, -1); //年份-1:2018-9-28 System.out.println(df.format(cal.getTime())); cal.add(Calendar.MONTH, 1); //月份-1:2018-10-28 System.out.println(df.format(cal.getTime())); cal.add(Calendar.DAY_OF_MONTH, -50); //日期-50:2018-9-8 // 这里要注意,日期的加减java都会自动的对月份进行加减 System.out.println(df.format(cal.getTime()));
-
获取日期之间,相差的天数
int day1 = cal.get(Calendar.DAY_OF_YEAR); cal.add(Calendar.MONTH, 1); cal.add(Calendar.DAY_OF_MONTH, -1); int day2 = cal.get(Calendar.DAY_OF_YEAR); System.out.println(day2-day1);