新的起點(diǎn) 新的開始

          快樂生活 !

          Calendar的使用(簡單)

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

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

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

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

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

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

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

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

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

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

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

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

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


          只有注冊用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          公告

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

          統(tǒng)計(jì)

          常用鏈接

          留言簿(13)

          隨筆分類(71)

          隨筆檔案(179)

          文章檔案(13)

          新聞分類

          IT人的英語學(xué)習(xí)網(wǎng)站

          JAVA站點(diǎn)

          優(yōu)秀個(gè)人博客鏈接

          官網(wǎng)學(xué)習(xí)站點(diǎn)

          生活工作站點(diǎn)

          最新隨筆

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 卢龙县| 阿拉善左旗| 海丰县| 永靖县| 富平县| 孝昌县| 呼图壁县| 黄石市| 合江县| 嘉峪关市| 肥乡县| 峨山| 友谊县| 全椒县| 化州市| 麻阳| 腾冲县| 崇信县| 灌南县| 游戏| 饶平县| 东阳市| 吉木乃县| 祁东县| 鄂托克前旗| 馆陶县| 揭阳市| 宽城| 古丈县| 藁城市| 长丰县| 江川县| 乌恰县| 宁陵县| 邯郸市| 通化市| 宁德市| 乐安县| 张家港市| 临高县| 桂阳县|