NSCalendar 对世界上现存的常用的历法进行了封装,既提供了不同历法的时间信息,又支持日历的计算。
NSCalendar -- 日历类,它提供了大部分的日期计算接口,并且允许您在NSDate和NSDateComponents之间转换
NSTimeZone -- 时区信息
NSLocale -- 本地化信息
NSDate -- 表示一个绝对的时间点
NSDateComponents -- 一个封装了具体年月日、时秒分、周、季度等的类
NSDateFormatter -- 用来在日期和字符串之间转换
firstWeekday
大家在使用 dateComponents.weekday 获取某天对应的星期时,会发现,星期日对应的值为 1,星期一对应的值为 2,星期二对应的值为 3,依次递推,星期六对应的值为 7,这与我们平时理解的方式不一样。然后,我们就开始找是不是可以设置这种对应关系。终于,我们在 NSCalendar 中发现了 firstWeekday 这个变量,从字面意思上看貌似就是我们寻找的那个东西。可是,设置过 firstWeekday 后,我们又发现完全没有作用,真是郁闷啊!其实,大家不必郁闷,因为郁闷也没用,iOS 中规定的就是周日为 1,周一为 2,周二为 3,周三为 4,周四为 5,周五为 6,周六为 7,无法通过某个设置改变这个事实的,只能在使用的时候 注意一下这个规则了。那 firstWeekday 是干什么用的呢?大家设置一下 firstWeekday,再获取一下 dateComponents.weekOfYear 或 dateComponents.weekOfMonth,看看返回的数据是否发生了变化。firstWeekday 的作用确实是修改当前历法中周的起始位置,但是不能修改周日对应的数值,只能修改一年或一个月中周的数量,以及周的次序。
1)获取一个小的单位在一个大的单位里面的序数
2)获取一个小的单位在一个大的单位里面的取值范围
3)获取所在日历单位的开始时间及所在日历单位的总秒数