主要用于对日历时间的加减、赋值操作,同样是抽象类,用它的子类GregorianCalendar实现具体方法。
主要要掌握get、set和add方法,因为Date类下的方法很多,其他需要的方法需要时查询即可。
ps:一月是0,依次后推;周日是1,周六是7;
具体方法在代码中有演示。
测试代码如下:
package cn.ldedu;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class DateCalendarTest {
public static void main(String[] args) {
Calendar c=new GregorianCalendar();
Date d=new Date();
/**
* 设置时间
* Calendar类中月和周几都定义了对应的int整数,等同于Calendar的值,如Calendar.FEBRUARY和1是等价的
*/
c.setTime(d);// 可以直接用Date类型直接赋值
c.set(2010, Calendar.FEBRUARY, 10, 14, 45,8); //设置时间,如果某参数不写会自动匹配当前的时间参数,如:不写分钟就会匹配当前的分钟,
//下方set等价于上面用一句话set
// c.set(Calendar.YEAR, 2010);
// c.set(Calendar.MONTH,1);
// c.set(Calendar.DAY_OF_MONTH,10);
// c.set(Calendar.HOUR, 14);
// c.set(Calendar.MINUTE, 45);
// c.set(Calendar.SECOND, 8);
d=c.getTime(); //Date类型获取c设置的时间
System.out.println(d);
System.out.println(c.get(Calendar.YEAR)); //GregorianCalendar类的get方法获取特定的参数
c.add(Calendar.YEAR, 10); //c的时间加十年
System.out.println(c.getTime());
c.add(Calendar.YEAR, -20); //c的时间减二十年
System.out.println(c.getTime());
System.out.println(c.getTimeInMillis()); //获取c的时间距离标准纪元的毫秒数
System.out.printf("当前日期是本周的第%d天",c.get(Calendar.DAY_OF_WEEK)); //获取当前日期是本周第几天
System.out.println();
System.out.printf("当前月份共有%d天",c.getActualMaximum(Calendar.DATE)); //获取当前月份共有多少天,修改Calendar.DATE即可获取共有多少月(11+1)等等
}
}
运行截图: