java.util.Clendar
日历类,该类是一个抽象类,封装了针对日期进行操作的一些方法,比如时间计算等。
使用Calendar的静态方法创建一个实例,该方法会根据当前系统所在地区创建一个相应的实现,通常为格力高立历,默认创建的实例表示的时间为当前系统时间
Calendar calendar = Calendar.getInstance();
System.out.println(calendar);//输出一连串的详细时间格式,不利于阅读
Calender与Date之间的相互转换
方法:Date getTime();Calendar提供了该方法并会返回一个Date对象,该对象表示的时间就是当前Calendar表示的时间,利于阅读
Date date = calendar.getTime();
System.out.println(date);//Mon May 30 22:50:59 CST 2016
方法:void setTime();Calendar提供了该方法会将给定的Date时间设置为当前Calendar所表示的时间
calendar.setTime(date);
设置时间分量
方法:void set(int field, int value);该方法第一个参数为要设置的具体的时间分量,例如年、月、日;第二个参数为一个int值,使用Calendar提供的常量进行设置
设置Calender,使其表示2008-8-8 20:08:08
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 2008);
calendar.set(Calendar.MONTH, Calendar.AUGUST);
calendar.set(Calendar.DAY_OF_MONTH, 8);//表示该月的具体一天,也可使用DATE
calendar.set(Calendar.HOUR_OF_DAY, 20);//表示该天的时间
calendar.set(Calendar.MINUTE, 8);
calendar.set(Calendar.SECOND, 8);
System.out.println(calendar.getTime());//Fri Aug 08 20:08:08 CST 2008
获取一个时间分量
方法:int get(int filed);
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH)+1;//月份从0开始计算,输出要加1
int day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(year+"-"+month+"-"+day);//2016-5-30
int days = calendar.get(Calendar.DAY_OF_YEAR);
System.out.println(year+"年已经过了"+thisYear+"天!");//2016年已经过了151天!
获取一个时间分量所允许的最大值
方法:int getActualMaximum(int field);
int days = calender.getActualMaximum(Calendar.DAY_OF_YEAR);
System.out.println(days);//366
时间的计算
方法:void add(int field, int value);给指定的时间分量加上给定的值,若给定的值为负数,则是减去该值
//查看3年2个月零8天后的日子
calendar.add(Calendar.YEAR, 3);
calendar.add(Calendar.MONTH, 2);
calendar.add(Calendar.DAY_OF_YEAR, 8);
Date date = calendar.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//利用SimpleDateFormat类将时间进行格式转换,符合阅读习惯
System.out.println(sdf.format(date));//2019-08-07