新的起點 新的開始

          快樂生活 !

          Calendar的使用(簡單)

          您可以使用Date來取得完整的日期時間顯示,但如果您想要單獨取得某個時間或日期資訊的話該如何?例如您想知道現在是5月的第幾天?

          您要使用Calendar類別,在這之前,您要先知道Calendar的一些方法取回的數字是對應于Calendar本身的常數,也就是說并不是您取回1 這個數字,就表示今天是星期一。

          想要取得現在的時間,首先使用Calendar的getInstance()取得一個Calendar的實例,例如:
          Calendar rightNow = Calendar.getInstance();
           

          如果現在您想知道現在是西元幾年,則可以使用get()方法并指定常數,例如:
          System.out.println(rightNow.get(Calendar.YEAR));
           

          如果現在是2005年,則上例會顯示2005的數字,依照這個例子,假設撰寫本文的時間是5月份,而您現在想使用程式取得現在的月份,則下例您可能會有些困惑:
          System.out.println(rightNow.get(Calendar.MONTH));
           

          程式會顯示4這個數字,而不是您預期的5,因為傳回的4并不是代表月份,而是對應于Calendar.MAY常數的值, Calendar在月份上的常數值從Calendar.JANUARY開始是0,到Calendar.DECEMBER的11,所以您如果想要顯示傳回值 的真正意涵,可以如下撰寫:
          String[] months = {"一月", "二月", "三月", "四月",
                              "五月", "六月", "七月", "八月",
                              "九月", "十月", "十一月", "十二月"};
                 
          Calendar rightNow = Calendar.getInstance();
          System.out.println(months[rightNow.get(Calendar.MONTH)]);
           

          同樣的,如果您想要取得星期資訊,要記得常數從Calendar.SUNDAY是1,到Calendar.SATURDAY是7,由于對應的數并不是從0 開始,所以如果要使用如上的陣列來對應的話,第一個陣列值就不包括資訊,例如:
          String[] dayOfWeek = {"", "日", "一", "二",
                                     "三", "四", "五", "六"};
                 
          Calendar rightNow = Calendar.getInstance();
          System.out.println(dayOfWeek[
                               rightNow.get(Calendar.DAY_OF_WEEK)]);
           

          總之您要記得傳回的值是對應于Calendar的某個常數,會這樣設計的原因在于實際上英文中對于星期或月份并不附以數字上的意涵,如Sunday、 Monday等,幸而除了月份、星期之外,傳回的值都對應于真正的時間意涵,畢竟像西元、小時、分等等本身就是以數字表示。

          在取得一個Calendar的實例后,您可以使用setTime()方法給它一個Date物件,將之改變為Date目前的時間,例如:
          Calendar c = Calendar.getInstance();
          Date date = new Date(10000000000L);
          c.setTime(date);

          還可以使用add()方法,來改變Calendar的時間,例如:
          c.add(Calendar.MONTH, 1); // 目前時間加1個月
          c.add(Calendar.HOUR, 3); // 目前時間加3小時
          c.add(Calendar.YEAR, -2); // 目前時間減2年
          c.add(Calendar.DAY_OF_WEEK, 3); // 目前的時間加3天

          如果打算只針對日期中某個欄位加減,則可以使用roll()方法,例如:
          c.roll(Calendar.MONTH, 10); // 只增加月的欄位值為10個月

          在上例中,假設是2006/10/1,則執行過后的Calendar實例,其中的時間將是2006/8/1,也就是只改變月份的欄位。

          posted on 2007-10-11 13:34 advincenting 閱讀(569) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          公告

          Locations of visitors to this pageBlogJava
        1. 首頁
        2. 新隨筆
        3. 聯系
        4. 聚合
        5. 管理
        6. <2007年10月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          統計

          常用鏈接

          留言簿(13)

          隨筆分類(71)

          隨筆檔案(179)

          文章檔案(13)

          新聞分類

          IT人的英語學習網站

          JAVA站點

          優秀個人博客鏈接

          官網學習站點

          生活工作站點

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 宜川县| 嘉义县| 沂水县| 永善县| 于都县| 日照市| 宁陕县| 镇巴县| 昌都县| 瑞丽市| 互助| 翁牛特旗| 长海县| 吐鲁番市| 平山县| 温宿县| 湘潭市| 象山县| 千阳县| 台州市| 青神县| 六安市| 海原县| 射阳县| 普洱| 博白县| 五原县| 长乐市| 四会市| 蒲城县| 南投市| 丹凤县| 衡阳市| 济宁市| 香格里拉县| 湛江市| 海口市| 白山市| 磐石市| 和龙市| 江达县|