1:定義
Calendar 類是一個抽象類(Abstract Class),GregorianCalendar 是它的一個具體實現(xiàn)。,它為特定時間與一組諸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日歷字段之間的轉(zhuǎn)換提供了一些方法,并為操作日歷字段(例如獲得下星期的日期)提供了一些方法。瞬間可用毫秒值來表示,它是距歷元(即格林威治標(biāo)準(zhǔn)時間 1970 年 1 月 1 日的 00:00:00.000,格里高利歷)的偏移量。
2:常用API

3:設(shè)置指定的一個時間

? 測試:

4:獲取時間信息
主要API:int get(int field);?
其中,參數(shù) field 的值由 Calendar 類的靜態(tài)常量決定。其中:YEAR 代表年,MONTH 代表月,HOUR 代表小時,MINUTE 代表分,如:

測試:

5:add方法

6:Calendar與Date轉(zhuǎn)換
Calendar轉(zhuǎn)為Date:

Date轉(zhuǎn)為Calendar:

7:計算兩個時間之間相隔天數(shù)

8.CalendarUtil
public class CalendarUtil {
/**
? ? * 計算指定日期為當(dāng)年第幾周
? ? * @param year? ? ? 指定的年份
? ? * @param month? ? 指定的月份
? ? * @param day? ? ? 指定的日
? ? * @return? ? ? ? ? 指定日期為當(dāng)年的第幾周
? ? */
? ? public static int caculateWeekOfYear(int year,int month,int day){
? ? ? ? Calendar c = Calendar.getInstance();
? ? ? ? c.set(Calendar.YEAR, year);
? ? ? ? c.set(Calendar.MONTH, month - 1);
? ? ? ? c.set(Calendar.DATE, day);
? ? ? ? return c.get(Calendar.WEEK_OF_YEAR);
? ? }
? ? /**
? ? * 獲取本月第一天是星期幾
? ? */
? ? public static int getWeekOfFirstDay(Calendar c){
? ? ? ? Calendar calendar = c;
? ? ? ? calendar.set(Calendar.DAY_OF_MONTH, 1);
? ? ? ? return calendar.get(Calendar.DAY_OF_WEEK);
? ? }
? ? /**
? ? * 獲取本月1號是該年的第幾周
? ? */
? ? public static int getMonthStartWeek(Calendar c){
? ? ? ? Calendar calendar = c;
? ? ? ? calendar.set(Calendar.DATE, 1);
? ? ? ? return calendar.get(Calendar.WEEK_OF_YEAR);
? ? }
? ? /**
? ? * 獲取當(dāng)天是該年的第幾周
? ? */
? ? public static int getCurrentWeekOfYear(){
? ? ? ? Calendar calendar = Calendar.getInstance();
? ? ? ? return calendar.get(Calendar.WEEK_OF_YEAR);
? ? }
? ? /**
? ? * 獲取上月的總天數(shù)
? ? */
? ? public static int getLastMonthDays(Calendar c){
? ? ? ? Calendar calendar = c;
? ? ? ? calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1);
? ? ? ? return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
? ? }
? ? /**
? ? * 獲取指定月份的總天數(shù)
? ? */
? ? public static int getCurrentMonthDays(int month){
? ? ? ? Calendar c = Calendar.getInstance();
? ? ? ? c.set(Calendar.MONTH, month);
? ? ? ? return c.getActualMaximum(Calendar.DAY_OF_MONTH);
? ? }
? ? /**
? ? * 獲取指定年份有多少周
? ? * @param year
? ? */
? ? public static int getTotalWeekOfYear(int year){
? ? ? ? Calendar c = Calendar.getInstance();
? ? ? ? return c.getActualMaximum(Calendar.WEEK_OF_YEAR);
? ? }
? ? /**
? ? * 判斷指定月份是否是當(dāng)前月
? ? */
? ? public static boolean isCurrentMonth(int month){
? ? ? ? Calendar c = Calendar.getInstance();
? ? ? ? return (c.get(Calendar.MONTH) == month)?true:false;
? ? }
? ? /**
? ? * 計算指定的月份共有多少天
? ? */
? ? public static int getTotalDaysOfMonth(int year, int month){
? ? ? ? Calendar c = Calendar.getInstance();
? ? ? ? c.set(Calendar.YEAR, year);
? ? ? ? c.set(Calendar.MONTH, month);
? ? ? ? c.set(Calendar.DATE, 1);
? ? ? ? return c.getActualMaximum(Calendar.DAY_OF_MONTH);
? ? }