NSCalendarUnit 随笔

最近做项目需要用到日历这个东西,并且项目自定义很大,所以不得不自己写一个日历,所以看了看NSCalendar的API文档。随笔:

 

 1 let componentFlags : NSCalendarUnit = .YearCalendarUnit | .MonthCalendarUnit | .DayCalendarUnit | .WeekCalendarUnit | .HourCalendarUnit | .MinuteCalendarUnit | .SecondCalendarUnit |  .WeekdayCalendarUnit | .WeekdayOrdinalCalendarUnit | .WeekOfMonthCalendarUnit | .WeekOfYearCalendarUnit  | .QuarterCalendarUnit //创建一个差不多算是全部的NSClaendaerUnit对象

 2 

 3 var component = NSCalendar.autoupdatingCurrentCalendar().components(componentFlags, fromDate: NSDate())//解析一个时间,这里默认解析的是 NSDate()也就是当前时间

 4 

 5 component.day = 20  //设置一下  日期

 6 

 7 component.month = 9 //是这一下月份

 8 

 9 var dates = NSCalendar.autoupdatingCurrentCalendar().dateFromComponents(component)  //得到设置完成后的日期 也就是 2015 - 9 - 20

10 

11 var components = NSCalendar.autoupdatingCurrentCalendar().components(componentFlags, fromDate: dates!)  //重新解析

12 

13 

14 ///////////////////////////////////////////////////////////////////以下为解析后的数据/////////////////////////////////////////////////////////////////////////////

15 

16 components.year //年 YearCalendarUnit

17 

18 components.month  //月 MonthCalendarUnit

19 

20 components.day  //日 DayCalendarUnit

21 

22 

23 

24 components.hour //小时 HourCalendarUnit   24小时制

25 

26 components.minute   //分钟 MinuteCalendarUnit

27 

28 components.second   //秒 SecondCalendarUnit

29 

30 

31 components.weekday  //每一周的第几天 WeekdayCalendarUnit   周日为0 周六为7

32 

33 components.weekdayOrdinal //每个月的第几周 WeekdayOrdinalCalendarUnit 按天数算的属于第几周,每七天算一周

34 

35 components.weekOfMonth  //每个月的第几周 WeekOfMonthCalendarUnit   按照日历表查的第几周

36 

37 components.weekOfYear   //每年的第几周 WeekOfYearCalendarUnit

38 

39 components.quarter  //季度 QuarterCalendarUnit 0 - 3

40 

41 components.leapMonth    //是不是闰月
NSDateComponents

 

 1 初始化方法

 2 

 3 1.init(calendarIdentifier:) Designated Initializer 系统比较想让用户使用的初始化方法

 4 

 5 需要传递一个  Identifier 

 6 

 7     /*

 8      FOUNDATION_EXPORT NSString * const NSGregorianCalendar;        //公历(常用)

 9      FOUNDATION_EXPORT NSString * const NSBuddhistCalendar;         //佛教日历

10      FOUNDATION_EXPORT NSString * const NSChineseCalendar;          //中国农历(常用)

11      FOUNDATION_EXPORT NSString * const NSHebrewCalendar;           //希伯来日历

12      FOUNDATION_EXPORT NSString * const NSIslamicCalendar;          //伊斯兰历

13      FOUNDATION_EXPORT NSString * const NSIslamicCivilCalendar;     //伊斯兰教日历

14      FOUNDATION_EXPORT NSString * const NSJapaneseCalendar;         //日本日历(和历,常用)

15      FOUNDATION_EXPORT NSString * const NSRepublicOfChinaCalendar;  //中华民国日历(台湾)

16      FOUNDATION_EXPORT NSString * const NSPersianCalendar;          //波斯历

17      FOUNDATION_EXPORT NSString * const NSIndianCalendar;           //印度日历

18      FOUNDATION_EXPORT NSString * const NSISO8601Calendar;          //ISO8601(但是现在还不可用)

19 

20 这段是摘抄的…………………………原谅我   http://www.cnblogs.com/CCSSPP/archive/2013/07/11/3183410.html 原文字这里&  

21      */

22 

23 

24 ……………………https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSCalendar_Class/#//apple_ref/occ/instm/NSCalendar/setFirstWeekday: 忽然不想写了…………请原谅我,自己去看看吧~  都很简单的。
NSCalendar 常用属性

 

 1 func rangeOfUnit(smaller: NSCalendarUnit, inUnit larger: NSCalendarUnit, forDate date: NSDate) -> NSRange //这个方法使用来获取大的单位里面有几个小的单位的。并且会给与你范围和开始值。比如你想获取当前时间这个月有多少天。那么 small 就穿  .DayCalendarUnit。lager就传递.MonthCalendarUnit 时间的话就传递  NSDate()

 2 

 3 func ordinalityOfUnit(smaller: NSCalendarUnit, inUnit larger: NSCalendarUnit, forDate date: NSDate) -> Int //这个方法和上一个方法很想,但是他获取的不是 有多少个了!  而是在第几个。比如你想知道现在是第几周啊(我说的这个第几周是说 在日历查行数的的那个行数,具体可以看上面代码中的  对于  NSDateConents的解析。)那么 第一个参数就传递  .WeekOfMonthCalendarUnit 第二个就传递  MonthCalendarUnit 第三个还是时间

 4 

 5 func dateFromComponents(comps: NSDateComponents) -> NSDate? //这个方法是根据你解析到的Comp对象变成事件,比如像获取这个月第一天的饿日期,就会用到它

 6 

 7 func component(unit: NSCalendarUnit, fromDate date: NSDate) -> Int //这个方法是获取你传递的方法的某一个属性,比如获取年啊,获取月啊,获取什么的饿……

 8 

 9 func compareDate(date1: NSDate, toDate date2: NSDate, toUnitGranularity unit: NSCalendarUnit) -> NSComparisonResult //比较两个时间的方法,第一个参数就是第一个事件第二个参数就是第二个时间,之后第三个就是你要比较他们什么呢?  日月年?随便~~~  之后他会给一个 枚举类型的 返回值,也就是 大~小~和相等

10 

11 func isDate(date1: NSDate, equalToDate date2: NSDate, toUnitGranularity unit: NSCalendarUnit) -> Bool //这个方法就是说 第一个事件是不是在某一个属性一样呢~  比如你要看是不是今天并不在意 小时分钟的话,那么你就第三个参数传递 年月日就可以了~

12 

13 func isDate(date1: NSDate, inSameDayAsDate date2: NSDate) -> Bool ///而这个方法呢,就是差一秒那也是不行的!

14 

15 func isDateInToday(date: NSDate) -> Bool //名字也知道……是不是今天?

16 

17 func isDateInYesterday(date: NSDate) -> Bool //不想说了……(是不是昨天)

18 

19 func isDateInTomorrow(date: NSDate) -> Bool //同上 (是不是明天)

20 

21 func isDateInWeekend(date: NSDate) -> Bool //是不是这个星期呢

22 

23 func dateByAddingUnit(unit: NSCalendarUnit, value: Int, toDate date: NSDate, options: NSCalendarOptions) -> NSDate?//这个就是处理时间的一个方法。最后一个直接nil就可以的。 https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSCalendar_Class/#//apple_ref/occ/instm/NSCalendar/components:fromDate:toDate:options: 这里有一个例子哦

24 

25 这几个方法已经够我用的了…… 其他的有的看不懂,有的不想说…… 你们有什么想知道的,可以问我哦
NScalendar 常用方法

 

过一段时间我会给你们一个传上来一个 Extension 关于这个类的

你可能感兴趣的:(calendar)