1:定義
Calendar 類是一個抽象類(Abstract Class),GregorianCalendar 是它的一個具體實現(xiàn)。洽故,它為特定時間與一組諸如 YEAR、MONTH盗誊、DAY_OF_MONTH时甚、HOUR 等 日歷字段之間的轉換提供了一些方法隘弊,并為操作日歷字段(例如獲得下星期的日期)提供了一些方法。瞬間可用毫秒值來表示荒适,它是距歷元(即格林威治標準時間 1970 年 1 月 1 日的 00:00:00.000梨熙,格里高利歷)的偏移量。
2:常用API
3:設置指定的一個時間
? 測試:
4:獲取時間信息
主要API:int get(int field);?
其中刀诬,參數(shù) field 的值由 Calendar 類的靜態(tài)常量決定咽扇。其中:YEAR 代表年,MONTH 代表月陕壹,HOUR 代表小時质欲,MINUTE 代表分,如:
測試:
5:add方法
6:Calendar與Date轉換
Calendar轉為Date:
Date轉為Calendar:
7:計算兩個時間之間相隔天數(shù)
8.CalendarUtil
public class CalendarUtil {
/**
? ? * 計算指定日期為當年第幾周
? ? * @param year? ? ? 指定的年份
? ? * @param month? ? 指定的月份
? ? * @param day? ? ? 指定的日
? ? * @return? ? ? ? ? 指定日期為當年的第幾周
? ? */
? ? 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);
? ? }
? ? /**
? ? * 獲取當天是該年的第幾周
? ? */
? ? 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);
? ? }
? ? /**
? ? * 判斷指定月份是否是當前月
? ? */
? ? 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);
? ? }