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对象进行相互转换,以方便程序使用;


看官们,本章回的内容就介绍到这里,欲知后事如何且听下回分解!

猜你喜欢

转载自blog.csdn.net/talk_8/article/details/121458371