Cocoa中對日期和時間的處理 NSCalendar (一)

NSCalendar用於處理時間相關問題。好比比較時間先後、計算日期所的周別等。ide

 

1. 建立或初始化可用如下方法函數

    + (id)currentCalendar;spa

    取得當前用戶的邏輯日曆(logical calendar)it

 

    + (id)autoupdatingCurrentCalendar;方法

    取得當前用戶的邏輯日曆(logical calendar), ......im

 

    - (id)initWithCalendarIdentifier:(NSString *)identifier;di

    初始化爲各類日曆。identifier的範圍能夠是:時間

       NSGregorianCalendarvi

       NSBuddhistCalendarco

       NSChineseCalendar

       NSHebrewCalendar

       NSIslamicCalendar

       NSIslamicCivilCalendar

       NSJapaneseCalendar

 

2. 使用前如有必要能夠先作如下設定

    - (void)setLocale:(NSLocale *)locale;

    設置區域

 

    - (void)setTimeZone:(NSTimeZone *)tz;

    設置時區

 

    - (void)setFirstWeekday:(NSUInteger)value;

    設定每週的第一天從星期幾開始,好比:

    .  如需設定從星期日開始,則value傳入1

    .  如需設定從星期一開始,則value傳入2

    .  以此類推

    詳細信息請參閱FirstWeekday屬性

 

    - (void)setMinimumDaysInFirstWeek:(NSUInteger)value;

    設定做爲(每一年及每個月)第一週必須包含的最少天數,好比:

    .  如需設定第一週最少包括7天,則value傳入7

    詳細信息請參閱MinimumDaysInFirstWeek屬性

 

3. 取回設定信息用如下方法

    - (NSString *)calendarIdentifier

    返回日曆標示符(identifier)。有效的日曆標示符包括:

       NSGregorianCalendar

       NSBuddhistCalendar

       NSChineseCalendar

       NSHebrewCalendar

       NSIslamicCalendar

       NSIslamicCivilCalendar

       NSJapaneseCalendar

  

    - (NSLocale *)locale;

    返回日曆指定的地區信息。它將影響???

 

    - (NSTimeZone *)timeZone;

    返回日曆指定的時區信息。它將影響???

 

    - (NSUInteger)firstWeekday;

    返回日曆指定的每週的第一天從星期幾開始。缺省爲星期天,即firstWeekday = 1

    當方法[NSCalendar ordinalityOfUnit: inUnit: fromDate:]的ordinalityOfUnit參數爲NSWeekdayCalendarUnit,inUnit參數爲NSWeekCalendarUnit時,firstWeekday屬性影響它的返回值。具體說明以下:

    .  當firstWeekday被指定爲星期天(即 = 1)時,它返回的值與星期幾對應的數值保持一致。好比:

       fromDate傳入的參數是星期日,則函數返回1

       fromDate傳入的參數是星期一,則函數返回2

    .  當firstWeekday被指定爲其它值時(即 <> 1)時,假設firstWeekday被指定爲星期一(即 = 2),那麼:

       fromDate傳入的參數是星期一,則函數返回1

       fromDate傳入的參數是星期二,則函數返回2

       fromDate傳入的參數是星期日,則函數返回7

 

    - (NSUInteger)minimumDaysInFirstWeek;

    返回日曆指定的第一週必須包含的最少天數。缺省爲1,即minimumDaysInFirstWeek = 1。

    當方法[NSCalendar ordinalityOfUnit: inUnit: fromDate:]的ordinalityOfUnit參數爲NSWeekCalendarUnit,inUnit參數爲NSYearCalendarUnit時,minimumDaysInFirstWeek屬性影響它的返回值。具體說明以下:

 

       2005年1月

       日   一   二   三   四   五   六

       --------------------------------

                                      1

        2    3    4    5    6    7    8   

        9   10   11   12   13   14   15  

       16   17   18   19   20   21   22

       23   24   25   26   27   28   29

       30   31  

 

    2005年1月第一週包括1號。

    a. 若是將minimumDaysInFirstWeek設定 = 1

       則fromDate傳入1月1號,方法均返回1  ==> 知足minimumDaysInFirstWeek指定的天數(最少1天),因此方法將其歸爲2005年的第1周

       則fromDate傳入1月2-8號,方法均返回2

       則fromDate傳入1月9-15號,方法均返回3

       ......

 

    b. 若是將minimumDaysInFirstWeek設定爲 > 1,好比2

       則fromDate傳入1月1號,方法均返回53  ==> 不足2天,因此方法將其歸爲2004年的第53周

       則fromDate傳入1月2-8號,方法均返回1

       則fromDate傳入1月9-15號,方法均返回2

       ......

 

 

       2008年1月

       日   一   二   三   四   五   六

       ---------------------------------

                  1    2    3    4    5

        6    7    8    9   10   11   12

       13   14   15   16   17   18   19

       20   21   22   23   24   25   26

       27   28   29   30   31  

 

    2005年1月第一週包括1-5號共5天。

    a. 若是將minimumDaysInFirstWeek設定爲 <= 5時

       則fromDate傳入1月1-5號,方法均返回1  ==> 知足minimumDaysInFirstWeek指定的天數,因此方法將其歸爲2008年的第1周

       則fromDate傳入1月6-12號,方法均返回2

       則fromDate傳入1月13-19號,方法均返回3

       ......

    b. 若是將minimumDaysInFirstWeek設定爲 > 5,好比6

       則fromDate傳入1月1-5號,方法均返回53  ==> 當週不足6天,因此方法將其歸爲2007年的第53周

       則fromDate傳入1月2-8號,方法均返回1

       則fromDate傳入1月9-15號,方法均返回2

       ......

    當方法[NSCalendar ordinalityOfUnit: inUnit: fromDate:]的ordinalityOfUnit參數爲NSWeekCalendarUnit,inUnit參數爲NSMonthCalendarUnit時,minimumDaysInFirstWeek屬性影響它的返回值。以2008年4月爲例, 具體說明以下:

 

       2008年4月

       日   一   二   三   四   五   六

       ---------------------------------

                  1    2    3    4    5

        6    7    8    9   10   11   12

       13   14   15   16   17   18   19

       20   21   22   23   24   25   26

       27   28   29   30  

 

 

    2008年4月第一週包括一、二、三、四、5號。

    1. 若是將minimumDaysInFirstWeek設定爲小於或等於5的數

       則fromDate傳入4月1-5號,方法均返回1

       則fromDate傳入4月6-12號,方法均返回2

       則fromDate傳入4月13-19號,方法均返回3

       ....

    2. 若是將minimumDaysInFirstWeek設定爲大於5的數

       則fromDate傳入1-5號,方法均返回0

       則fromDate傳入6-12號,方法均返回1

       則fromDate傳入13-19號,方法均返回2

       ....

相關文章
相關標籤/搜索