zoukankan      html  css  js  c++  java
  • 日期和时间的处理 NSCalendar (一)

    NSCalendar用于处理时间相关问题。比如比较时间前后、计算日期所的周别等。

    1. 创建或初始化可用以下方法

        + (id)currentCalendar;

        取得当前用户的逻辑日历(logical calendar)

     

        + (id)autoupdatingCurrentCalendar;

        取得当前用户的逻辑日历(logical calendar), ......

     

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

        初始化为各种日历。identifier的范围可以是:

           NSGregorianCalendar

           NSBuddhistCalendar

           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月第一周包括1、2、3、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

           ....

  • 相关阅读:
    Poj 1742 Coins(多重背包)
    Poj 2350 Above Average(精度控制)
    求二进制数中1的个数
    Poj 1659 Distance on Chessboard(国际象棋的走子规则)
    Poj 2411 Mondriaan's Dream(压缩矩阵DP)
    Poj 2136 Vertical Histogram(打印垂直直方图)
    Poj 1401 Factorial(计算N!尾数0的个数——质因数分解)
    poj 2390 Bank Interest(计算本利和)
    Poj 2533 Longest Ordered Subsequence(LIS)
    Poj 1887 Testing the CATCHER(LIS)
  • 原文地址:https://www.cnblogs.com/luqinbin/p/4910948.html
Copyright © 2011-2022 走看看