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

           ....

  • 相关阅读:
    matlab读取不规则txt文件
    ImportError: No module named python_util.util
    Check failed: error == cudaSuccess (2 vs. 0) out of memory
    Check failed: error == cudaSuccess (10 vs. 0) invalid device ordinal
    求助 一个很简单的ACM题 java代码 自己电脑上测都是正确的 但提交总是wrong answer 先谢谢了
    1151Word Reversal ACM题答案 java版
    1051A New Growth Industry ACM题答案 java版
    1115Digital Roots ACM题答案 java版
    1049 I Think I Need a Houseboat ACM题答案 java版
    java.sql.SQLException:Access denied for user 'root'@'localhost' (using password:YES) mysql开发
  • 原文地址:https://www.cnblogs.com/luqinbin/p/4910948.html
Copyright © 2011-2022 走看看