免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Calendar類set()、add()、roll()方法區(qū)別
1、set方法
Calendar類的MONTH是從0開(kāi)始;
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)行。









本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
查看日歷
每天一個(gè)linux命令(38):cal 命令
linux cal
Calendar獲取時(shí)間的月和日
Linux簡(jiǎn)單指令
人生感悟與日歷
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服