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 关于这个类的

转载于:https://www.cnblogs.com/Jiwz/p/4356435.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值