博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NSCalendar--日历、日程、时间
阅读量:4356 次
发布时间:2019-06-07

本文共 2079 字,大约阅读时间需要 6 分钟。

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(_ smaller: ,                inUnit larger: , forDate date: ) ->

假设:以上函数的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

       ....

转载于:https://www.cnblogs.com/muzijie/p/5772739.html

你可能感兴趣的文章
BFC对于布局的帮助
查看>>
MatlabR2015b用了一段时间之后需要重新激活
查看>>
降维打击 Dimensionality reduction attack
查看>>
PhantomJS 在linux上使用
查看>>
SQL Server - select语句练习
查看>>
第八章 指针实验
查看>>
iOS 断当前时间是否在一天的某个时间段内。
查看>>
Jebref 的使用方法
查看>>
关于时间戳转成时间格式的相关问题
查看>>
洛谷 P1582 倒水 解题报告
查看>>
GnuPG高级指导(4)加密分发我的私钥
查看>>
PHP 模板引擎Smarty的基本语法
查看>>
transform
查看>>
[杂]右键拷贝文件路径
查看>>
Coursera机器学习——Recommender System测验
查看>>
继承与组合
查看>>
linux下多任务简单实现
查看>>
游标的使用【转】
查看>>
PADS Logic VX.2.3 修改软件界面语言
查看>>
福州大学软件工程1916|W班 第3次作业成绩排名
查看>>