Calendar类

Calendar:它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。

一、构造方法

protected Calendar() :由于修饰符是protected,所以无法直接创建该对象。需要通过别的途径生成该对象。

二、成员方法

static Calendar getInstance() 使用默认时区和区域设置获取日历。**通过该方法生成Calendar对象。**如下所示:Calendar cr=Calendar.getInstance();
public void set(int year,int month,int date,int hourofday,int minute,int second) 设置日历的年、月、日、时、分、秒。
public int get(int field) 返回给定日历字段的值。所谓字段就是年、月、日等等。
public void setTime(Date date) 使用给定的Date设置此日历的时间。Date——Calendar
public Date getTime() 返回一个Date表示此日历的时间。Calendar—–Date
abstract void add(int field,int amount) 按照日历的规则,给指定字段添加或减少时间量。
public long getTimeInMillies() 以毫秒为单位返回该日历的时间值。

三、日历字段

日历字段包含以下两种:一种是表示时间的单位,例如年、月、日等等。另一种是具体的日期,例如一月、二月、三月、一日、二日、三日、一点钟、两点钟等等具体的时间。前一种一般时获取的时候使用,后一种一般判断的时候使用。

时间单位字段:

*YEAR* *MINUTE* *DAY_OF_WEEK_IN_MONTH* 某月中第几周
*MONTH* SECOND/MILLISECOND 秒/毫秒 *WEEK_OF_MONTH* 日历式的第几周
*DATE* *DAY_OF_MONTH* 和DATE一样 *DAY_OF_YEAR* 一年的第多少天
*HOUR_OF_DAY* *DAY_OF_WEEK* 周几 *WEEK_OF_YEAR* 一年的第多少周

具体时间字段:这里就不累赘了,从一月到十二月、从周一到周五

特殊的:AM_PM 返回1则表示是下午,返回0表示上午。

四、例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.Calendar;

// 标题:世纪末的星期
// 曾有邪教称1999年12月31日是世界末日。当然该谣言已经不攻自破。还有人称今后的某个世纪末的12月31日,如果是星期一则会....
// 有趣的是,任何一个世纪末的年份的12月31日部不可能是星期一!!于是,“谣言制造商“又修改为星期日......
// 1999年的12月31日是星期五,请问:未来剧一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)?
// 请回答该年份(只写这个4位整数。不要写12月31等多余信息)
public class _01世纪末的星期 {
public static void main(String[] args){
Calendar calendar = Calendar.getInstance();
for(int year =1999;year<10000;year+=100){
calendar.set(Calendar.YEAR,year);
calendar.set(Calendar.MONTH,11);//12月
calendar.set(Calendar.DAY_OF_MONTH,31);
if(calendar.get(Calendar.DAY_OF_WEEK)==1){
System.out.println(year);
break;
}
}