Java-Calendar

  1 import java.util.Calendar;
  2 /**
  3  * 日曆類
  4  */
  5 public class TestCalendar {
  6     public static void main(String[] args) {
  7         /**
  8          * java.util.Calendar  日曆類
  9          * 
 10            *          1.因爲Calendar類是抽象類,且Calendar類的構造方法是protected的,
 11          *         因此沒法使用Calendar類的構造方法來建立對象,API中提供了getInstance方法用來建立對象。
 12          *         
 13          *         2.使用該方法得到的Calendar對象就表明當前的系統時間,因爲Calendar類toString實現的沒有Date類那麼直觀,
 14          *         因此直接輸出Calendar類的對象意義不大。
 15          */
 16         Calendar cal = Calendar.getInstance(); //返回當前日曆對象
 17         
 18         /**
 19          * set方法的聲明爲:public final void set(int year,int month,int date)
 20          * 
 21          *     Calendar類中年份的數值直接書寫,月份的值爲實際的月份值減1,日期的值就是實際的日期值。
 22          */
 23         cal.set(2016, 2, 23);
 24         System.out.println(cal.getTime()); // 獲取爲日期Date類型:Wed Mar 23 12:19:30 CST 2016
 25         
 26         /**
 27          *         若是隻設定某個字段:
 28          * 
 29          *         例如日期的值,則可使用以下set方法:
 30          *         public void set(int field,int value)
 31          * 
 32          * 
 33          *         在該方法中,參數field表明要設置的字段的類型,常見類型以下:
 34          *         Calendar.YEAR---年份;
 35          *         Calendar.MONTH---月份; 
 36          *         Calendar.DATE---日期; 
 37          *         Calendar.DAY_OF_MONTH---日期,和Calendar.DATE字段徹底相同;
 38          *         Calendar.HOUR---12小時制的小時數;
 39          *         Calendar.HOUR_OF_DAY---24小時制的小時數;
 40          *         Calendar.MINUTE---分鐘;
 41          *         Calendar.SECOND---秒;
 42          *         Calendar.DAY_OF_WEEK---星期幾。
 43          * 
 44          *         在Calendar類中,週日是1,週一是2,週二是3,依次類推。週六爲最後一天
 45          * 
 46          *         後續的參數value表明設置成的值。
 47          *         例如:
 48          *         c1.set(Calendar.DATE,10);
 49          *         該代碼的做用是將c1對象表明的時間中日期設置爲10號,其它全部的數值會被從新計算,
 50          *         例如星期幾以及對應的相對時間數值等。
 51          */
 52         cal.set(Calendar.DATE, 10);  //修改日期爲10號,修改以後cal對應的星期等都會從新計算
 53         
 54         /**
 55          *    得到Calendar類中的信息:
 56          */
 57         int year =cal.get(cal.YEAR);            //獲取年份
 58         int month = cal.get(cal.MONTH);            //獲取月份
 59         int date = cal.get(cal.DATE);            //獲取日期
 60         
 61         int date1 = cal.get(cal.DAY_OF_MONTH);    //獲取日期和cal.DATE同樣
 62         int day = cal.get(cal.DAY_OF_WEEK);        //獲取星期幾
 63         int day2 = cal.get(cal.DAY_OF_YEAR);    //獲取當前是一年中的第多少天
 64         //某月中第幾周,以月份天數爲標準
 65         int day3 = cal.get(cal.DAY_OF_WEEK_IN_MONTH);//按這個月1號算,1號起就是第1周,8號起就是第2周。 
 66         
 67         int hour = cal.get(cal.HOUR);            //獲取12小時制的小時數
 68         int hour2 = cal.get(cal.HOUR_OF_DAY);    //獲取24小時制的小時數
 69         
 70         int minute = cal.get(cal.MINUTE);        //獲取分鐘
 71         int second = cal.get(cal.SECOND);        //獲取秒
 72         
 73         int week1 = cal.get(cal.WEEK_OF_YEAR);   //一年中的第幾周
 74         int week2 = cal.get(cal.WEEK_OF_MONTH);  //日曆式的第幾周
 75         
 76         
 77         /**
 78          *  若是須要指定一週的開始日期,則須要在指定開始日期以後再設置日期
 79          *     默認一週的開始爲週日,結束爲週六
 80          */
 81         cal.setFirstDayOfWeek(Calendar.MONDAY); //設置一週的第一天爲MONDAY
 82         
 83         
 84         /**
 85          * 獲取指定日期所在月最小日和最大日   最大日28天  29天  30天 31天
 86          */
 87         Calendar calendar = Calendar.getInstance(); //返回當前日曆對象
 88         int minDay = calendar.getActualMinimum(Calendar.DATE);  
 89         int maxDay = calendar.getActualMaximum(Calendar.DATE);   // 獲取當月最大天數
 90         System.out.println(minDay + "-" + maxDay);  //1 - 31
 91         
 92         /**
 93          * 其餘方法說明:
 94          *     (1)add方法:    public abstract void add(int field,int amount)
 95          *         該方法的做用是在Calendar對象中的某個字段上增長或減小必定的數值,增長是amount的值爲正,減小是amount的值爲負。
 96          */
 97         
 98         /**
 99          * 例如計算當前時間100天之後的日期,代碼以下:
100          *         這裏add方法是指在c3對象的Calendar.DATE,也就是日期字段上增長100,
101          *         類內部會從新計算該日期對象中其它各字段的值,從而得到100天之後的
102          */
103         Calendar c3 = Calendar.getInstance();
104         c3.add(Calendar.DATE,100);
105         int year1 = c3.get(Calendar.YEAR); 
106         int month1 = c3.get(Calendar.MONTH);
107         int d1  = c3.get(Calendar.DATE);
108         System.out.println(year1 + "年" + month1 + "月" + d1 + "日");
109         
110         /**
111          * (2)after方法:   public boolean after(Object when)
112          *         該方法的做用是判斷當前日期對象是否在when對象的後面,若是在when對象的後面則返回true,不然返回false。
113          * 
114          * (3)before方法:  該方法是判斷當前日期對象是否位於另一個日期對象以前。
115          */
116         Calendar c4 = Calendar.getInstance(); 
117         c4.set(2016,8-1,28);
118         
119         Calendar c5 = Calendar.getInstance();
120         c5.set(2016,10-1,1);
121         boolean b = c5.after(c4);   //判斷兩個日期先後
122         System.out.println(b);
123         
124         /**
125          * Calendar對象和相對時間之間的轉換:
126          * 
127          *     1.在轉換時,使用Calendar類中的getTimeInMillis方法能夠將Calendar對象轉換爲相對時間。
128          * 
129          *     2.在將相對時間轉換爲Calendar對象時,首先建立一個Calendar對象,
130          *     而後再使用Calendar類的setTimeInMillis方法設置時間便可。
131          */
132         Calendar c6 = Calendar.getInstance();  
133         long t1 = c6.getTimeInMillis();  //將Calendar對象轉換爲相對時間
134         
135         Calendar c9 = Calendar.getInstance();
136         long t = 1252785271098L;
137         c9.setTimeInMillis(t);   //將相對時間轉換成Calendar對象
138         
139         /**
140          * 計算2016年8月20號和2016年8月29號之間相差的天數。
141          * 
142          * 
143          * 原理:
144          *     首先表明兩個特定的時間點,這裏使用Calendar的對象進行表明,而後將兩個時間點轉換爲對應的相對時間,
145          *  求兩個時間點相對時間的差值,而後除以一天的毫秒數(24小時*60分鐘*60秒*1000毫秒)便可得到對應的天數
146          */
147         
148         Calendar c1 = Calendar.getInstance(); 
149         c1.set(2016, 8-1,20);
150         long time1 = c1.getTimeInMillis();
151         
152         Calendar c2 = Calendar.getInstance();
153         c2.set(2016, 8-1,29);
154         long time2 = c1.getTimeInMillis();
155         
156         //計算天數
157         long days = (time2-time1)/(24*60*60*1000);
158     }
159 }
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息