zoukankan      html  css  js  c++  java
  • NSCalendar--日历、日程、时间

    1 获取系统的本地信息

    //返回当前用户的逻辑日历(Returns the logical calendar for the current user.)
    + currentCalendar  
    //返回当前用户的当前逻辑日历 (
    Returns the current logical calendar for the current user.
    + autoupdatingCurrentCalendar

    2 创建或初始化日历

    + calendarWithIdentifier:
    - initWithCalendarIdentifier:
    identifier的选项有:
    NSCalendarIdentifierGregorian: 大部分地区都可以用这个
    NSCalendarIdentifierChinese: 中国日历也可以使用这个,尤其是用于计算天文数字的日期和中国传统假期的时候

    3 获取日历的信息(有必要也可以进行设置)

    locale: 区域
    timeZone: 时区
    firstWeekday: 每周第一天从星期几开始,1表示星期日,2表示星期一
    - (NSRange)maximumRangeOfUnit:(NSCalendar)unit  返回某个NSCalendarUnit内的最大范围(例如:Gregorian calendar的Day unit的最大范围是1-31)
    - (NSRange)minimumRangeOfUnit:(NSCalendar)unit  返回某个NSCalendarUnit内的最小范围(例如:Gregorian calendar的Day unit的最大范围是1-28)
    minimumDaysInFirstWeek: (每年、每月)第一周必须包含的最少天数
    //返回当前日期在large unit中small unit的第几个unit
    func ordinalityOfUnit(smallerNSCalendarUnit,
                   inUnit largerNSCalendarUnit,
                  forDate dateNSDate) -> Int

    假设:以上函数的smaller.Weeklarger.Year时,minimumDaysInFirstWeek属性影响它的返回值。具体说明如下:

         2011年1月

     

        2011年1月第一周包括1号。

        a. 如果将minimumDaysInFirstWeek设定 = 1

           则fromDate传入1月1号,方法均返回1  ==> 满足minimumDaysInFirstWeek指定的天数(最少1天),所以方法将其归为2011年的第1周

           则fromDate传入1月2-8号,方法均返回2

           则fromDate传入1月9-15号,方法均返回3

           ......

     

        b. 如果将minimumDaysInFirstWeek设定为 > 1,比如2

           则fromDate传入1月1号,方法均返回53  ==> 不足2天,所以方法将其归为2010年的第53周

           则fromDate传入1月2-8号,方法均返回1

           则fromDate传入1月9-15号,方法均返回2

           ......

      2013年1月

       2013年1月第一周包括1-5号共5天。

        a. 如果将minimumDaysInFirstWeek设定为 <= 5时

           则fromDate传入1月1-5号,方法均返回1  ==> 满足minimumDaysInFirstWeek指定的天数,所以方法将其归为2013年的第1周

           则fromDate传入1月6-12号,方法均返回2

           则fromDate传入1月13-19号,方法均返回3

           ......

        b. 如果将minimumDaysInFirstWeek设定为 > 5,比如6

           则fromDate传入1月1-5号,方法均返回53  ==> 当周不足6天,所以方法将其归为2012年的第53周

           则fromDate传入1月2-8号,方法均返回1

           则fromDate传入1月9-15号,方法均返回2

           ......

    继续假设:以上函数的smaller.Weeklarger.Month时,minimumDaysInFirstWeek属性影响它的返回值。具体说明如下:

       以上图中2013年1月为例:

     2013年1月第一周包括1、2、3、4、5号。

        a. 如果将minimumDaysInFirstWeek设定为小于或等于5的数

           则fromDate传入1月1-5号,方法均返回1

           则fromDate传入1月6-12号,方法均返回2

           则fromDate传入1月13-19号,方法均返回3

           ....

        b. 如果将minimumDaysInFirstWeek设定为大于5的数

           则fromDate传入1月1-5号,方法均返回0

           则fromDate传入1月6-12号,方法均返回1

           则fromDate传入1月13-19号,方法均返回2

           ....

  • 相关阅读:
    StartSSL免费证书申请笔记
    CAS实践笔录
    MySQL常用SQL/函数汇总(持续更新)
    Git学习笔记(持续更新)
    Nginx配置性能优化
    OneDrive无法正常登录
    Windows注册表(持续更新)
    Mysql操作笔记(持续更新)
    MySQL 绿色版(zip) 安装
    Ubuntu/Deepin下常用软件汇总(持续更新)
  • 原文地址:https://www.cnblogs.com/muzijie/p/5772739.html
Copyright © 2011-2022 走看看