Foundation框架中的NSCalendar
Posted talk_8
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Foundation框架中的NSCalendar相关的知识,希望对你有一定的参考价值。
看官们,我们在前面章回中介绍了Foundation框架中的NSDateFormatter,本章回中将介绍Foundation框架中的NSCalendar。
NSCalendar是Foundation框架中的类,它把日期和时间中的各个单元(年月日和时分秒)封装起来,提供一些常用的功能以方便我们在程序中使用。它的主要功能为分解和合并日期和时间单元。
分解就是把被封装的日期和时间单元从NSCalendar对象中独立分离出来,因为有时候只需要使用其中的某个单元。
合并与分离正好相反,它把独立的日期和时间单元合并成NSCalendar对象。接下来我们介绍一下类中常用的方法。
初始化
+ (NSCalendar *)calendarWithIdentifier:(NSCalendarIdentifier)calendarIdentifierConstant;
- (id)initWithCalendarIdentifier:(NSCalendarIdentifier)ident;
这两个方法都可以用来初始化,不过第一个方法是类的方法,第二个方法是对象的方法。它们的参数是NSCalendarIdentifier类型,该类型是枚举,系统提供了许多枚举常量来表示不同地区的日期和时间。大部分情况下我们使用NSCalendarIdentifierGregorian这个枚举常量,并且把它当作参数,它表示创建与UTC时间匹配的标准时间。
分解操作
- (NSDateComponents *)components:(NSCalendarUnit)unitFlags
fromDate:(NSDate *)date;
该方法把参数date中的日期和时间分解为单个的日期和时间单元,并且把这些单元以返回值的形式返回,注意返回值的类型是NSDateComponents。
该方法不会分解所有的日期和时间单元,它依据参数unitFlags中的值来分解,该参数是NSCalendarUnit类型,此类型是枚举类型,它提供了年月日和时分秒这些单元。我们只需要把自己需要分解的单元在赋值到参数中就可以。这样可以避免分解不必要的单元。
合并操作
- (NSDate *)dateFromComponents:(NSDateComponents *)comps
该方法把参数comps中包含的日期和时间转换为NSDate类的对象,因此对日期和时间单元的合并是间接通过NSDateComponents对象进行的。我们稍后会对该类型做介绍。该方法把转换后的NSDate类对象以返回值的形式返回,这样我们就可以直接以NSDate的方式使用日期和时间。
NSDateComponents类
这个类是Foundation框架中提供的类,在分解和合并日期单元的操作中都出现过,它可以看作是NSCalendar类的辅助类,通过该类可以直接操作日期和时间单元,下面是该类中常用的方法:
- (NSInteger)valueForComponent:(NSCalendarUnit)unit;
- (void)setValue:(NSInteger)value forComponent:(NSCalendarUnit)unit;
这两个方法可以看作是对属性的getter/setter操作,只需要通过unit参数来指定具体的属性就可以完成对该属性的操作,比如把unit属性设置为NSCalendarUnitYear时就表示操作年这个日期单元,其它日期和时间单元的操作也类似,我们就不一一举例了。除了使用这两个方法操作属性外,我们还可以使用点操作的方式来直接访问属性,比如component.year就表示操作年这个日期单元.
最后我们对本章回的内容做一个总结:
- 1.NSCalendar类主要是对日期和时间中的各个单元进行分解和合并操作;
- 2.NSDateComponents类是NSCalendar类的辅助类,通过该类的setter/getter方法可直接操作日期和时间单元;
- 3.通过NSCalendar类的分解和合并操作,我们可以把单独的日期和时间单元与NSDate对象进行相互转换,以方便程序使用;
看官们,本章回的内容就介绍到这里,欲知后事如何且听下回分解!
以上是关于Foundation框架中的NSCalendar的主要内容,如果未能解决你的问题,请参考以下文章