乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Calendar類set()、add()、roll()方法區(qū)別

       海賊的指輪 2015-06-16
      1、set方法
      Calendar類的MONTH是從0開始;
      public class CalendarDemo {
          public static void main(String[] args) {
              Calendar cal = Calendar.getInstance();
                cal.set(2009, 0, 31);
                cal.set(Calendar.MONTH, 3);
                Date testDate = cal.getTime();
                System.out.println(testDate);
                }
      結(jié)果輸出為:Fri May 01 16:14:14 CST 2009;

      從結(jié)果可以看出set方法會(huì)根據(jù)自然月的最大天數(shù)和傳入的DAY調(diào)整日期,如上代碼,四月份最大天數(shù)是4-30,所以set方法會(huì)將月份增加即五月份即5-01。

      2、add方法
      public class CalendarDemo {
          public static void main(String[] args) {
              Calendar cal = Calendar.getInstance();
                cal.set(2009, 0, 31);
                Date testDate = cal.getTime();
               
                Calendar cal1 = Calendar.getInstance();
                cal1.setTime(testDate);
                cal1.add(Calendar.MONTH,3);
                Date testDate1 = cal1.getTime();
                System.out.println(testDate1);
          }

      }
      輸出結(jié)果為:Thu Apr 30 16:23:14 CST 2009;

      從結(jié)果可以看出add方法會(huì)根據(jù)自然月的最大天數(shù)調(diào)整日期,如上代碼,add方法不會(huì)根據(jù)傳入的DAY值調(diào)整月份,而是會(huì)根據(jù)月份調(diào)整傳入的DAY;

      3、roll方法

      public class CalendarDemo {
          public static void main(String[] args) {
              Calendar cal = Calendar.getInstance();
                cal.set(2009, 0, 31);
                Date testDate = cal.getTime();
               
                Calendar cal1 = Calendar.getInstance();
                cal1.setTime(testDate);
                cal1.roll(Calendar.MONTH, 13);
                Date testDate1 = cal1.getTime();
                System.out.println(testDate1);
          }

      }

      結(jié)果輸出為:Sat Feb 28 16:38:18 CST 2009

      注意看年份,在加了13個(gè)月之后仍然是2009年,所以roll方法不會(huì)改變當(dāng)前日期的最大年份,
      而是會(huì)根據(jù)月份的總數(shù)減去12作為當(dāng)前日歷的月份,在調(diào)整月份日期方面和add方法相同。

      下面是API(中文文檔)對(duì)以上三個(gè)方法的介紹:
             可以使用三種方法更改日歷字段: set()、 add() 和 roll()。

      set(f, value) 將日歷字段 f 更改為 value。此外,它設(shè)置了一個(gè)內(nèi)部成員變量,以指示日歷字段 f

      已經(jīng)被更改。盡管日歷字段 f 是立即更改的,但是直到下次調(diào)用 get()getTime()、

      getTimeInMillis()、add()roll() 時(shí)才會(huì)重新計(jì)算日歷的時(shí)間值(以毫秒為單位)。因

      此,多次調(diào)用 set() 不會(huì)觸發(fā)多次不必要的計(jì)算。使用 set() 更改日歷字段的結(jié)果是,其他日

      歷字段也可能發(fā)生更改,這取決于日歷字段、日歷字段值和日歷系統(tǒng)。此外,在重新計(jì)算日歷

      字段之后,get(f) 沒(méi)必要通過(guò)調(diào)用 set 方法返回 value 集合。具體細(xì)節(jié)是通過(guò)具體的日歷類確

      定的。

      示例:假定 GregorianCalendar 最初被設(shè)置為 1999 年 8 月 31 日。調(diào)用 set(Calendar.MONTH,

      Calendar.SEPTEMBER) 將該日期設(shè)置為 1999 年 9 月 31 日。如果隨后調(diào)用 getTime(),那么這

      是解析 1999 年 10 月 1 日的一個(gè)暫時(shí)內(nèi)部表示。但是,在調(diào)用 getTime() 之前調(diào)用 set(Calen

      dar.DAY_OF_MONTH, 30) 會(huì)將該日期設(shè)置為 1999 年 9 月 30 日,因?yàn)樵谡{(diào)用 set() 之后沒(méi)有發(fā)

      生重新計(jì)算。

      add(f, delta)delta 添加到 f 字段中。這等同于調(diào)用 set(f, get(f) + delta),但要帶

      以下兩個(gè)調(diào)整:

      Add 規(guī)則 1。調(diào)用后 f 字段的值減去調(diào)用前 f 字段的值等于 delta,以字段 f 中發(fā)

      生的任何溢出為模。溢出發(fā)生在字段值超出其范圍時(shí),結(jié)果,下一個(gè)更大的字段會(huì)

      遞增或遞減,并將字段值調(diào)整回其范圍內(nèi)。

      Add 規(guī)則 2。如果期望某一個(gè)更小的字段是不變的,但讓它等于以前的值是不可能

      的,因?yàn)樵谧侄?f 發(fā)生更改之后,或者在出現(xiàn)其他約束之后,比如時(shí)區(qū)偏移量發(fā)生

      更改,它的最大值和最小值也在發(fā)生更改,然后它的值被調(diào)整為盡量接近于所期望

      的值。更小的字段表示一個(gè)更小的時(shí)間單元。HOUR 是一個(gè)比 DAY_OF_MONTH 小的字

      段。對(duì)于不期望是不變字段的更小字段,無(wú)需進(jìn)行任何調(diào)整。日歷系統(tǒng)會(huì)確定期望

      不變的那些字段。

      此外,與 set() 不同,add() 強(qiáng)迫日歷系統(tǒng)立即重新計(jì)算日歷的毫秒數(shù)和所有字段。

      示例:假定 GregorianCalendar 最初被設(shè)置為 1999 年 8 月 31 日。調(diào)用 add(Calendar.MONTH,

      13) 將日歷設(shè)置為 2000 年 9 月 30 日。Add 規(guī)則 1MONTH 字段設(shè)置為 September,因?yàn)橄?

      August 添加 13 個(gè)月得出的就是下一年的 September。因?yàn)樵?GregorianCalendar 中,DAY_OF_

      MONTH 不可能是 9 月 31 日,所以 add 規(guī)則 2DAY_OF_MONTH 設(shè)置為 30,即最可能的值。盡

      管它是一個(gè)更小的字段,但不能根據(jù)規(guī)則 2 調(diào)整 DAY_OF_WEEK,因?yàn)樵?GregorianCalendar

      的月份發(fā)生變化時(shí),該值也需要發(fā)生變化。

      roll(f, delta)delta 添加到 f 字段中,但不更改更大的字段。這等同于調(diào)用 add(f, del

      ta),但要帶以下調(diào)整:

      Roll 規(guī)則。在完成調(diào)用后,更大的字段無(wú)變化。更大的字段表示一個(gè)更大的時(shí)間單

      元。DAY_OF_MONTH 是一個(gè)比 HOUR 大的字段。

      示例:請(qǐng)參閱 GregorianCalendar.roll(int, int)。

      使用模型。為了幫助理解 add()roll() 的行為,假定有一個(gè)用戶界面組件,它帶有用于月、

      日、年和底層 GregorianCalendar 的遞增或遞減按鈕。如果從界面上讀取的日期為 1999 年 1

      月 31 日,并且用戶按下月份的遞增按鈕,那么應(yīng)該得到什么?如果底層實(shí)現(xiàn)使用 set(),那么

      可以將該日期讀為 1999 年 3 月 3 日。更好的結(jié)果是 1999 年 2 月 28 日。此外,如果用戶再次

      按下月份的遞增按鈕,那么該日期應(yīng)該讀為 1999 年 3 月 31 日,而不是 1999 年 3 月 28 日。

      通過(guò)保存原始日期并使用 add()roll(),根據(jù)是否會(huì)影響更大的字段,用戶界面可以像大多

      數(shù)用戶所期望的那樣運(yùn)行。









        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多