先看效果图:
![](https://img.haomeiwen.com/i1154538/db84dd67b0e2f6d5.png)
我们要解决的问题:某年的某个月显示哪几个周?
我们使用一个UIPickerView创建自定义的周历选择器,数据源来自三个数组:1.装年的数组 2.装月的数组 3.装周的数组。
前两个数据源比较好获取,想要显示多少年就把我们需要的年放入到数组中即可,装月的数组更好获取,直接在数组中放入12个月即可,比较难获取的就是装周的数组。
要获取装周的数组中的数据,首先我们需要确定哪一年、那一月,在确定了年、月之后我们才能确定周。
确定某年的某个月:
_selectedMonth = [NSDate dateWithYear:[_years[_yearRow] integerValue] Month:[_month[_monthRow] integerValue] Day:1];
在确定了某年某月之后我们可以获取到这个月一共有多少个周。
方法:
[_selectedMonth numberOfWeeksInCurrentMonth];
这个方法是NSDate的一个分类中的方法。
我们可以遍历获取的到周,从第一周到最后一周,我们可以获取每一周的第一天和最后一天。
方法:
weekFirstDate = [_selectedMonth beginDateByWeekLevel:i];
weekEndDate = [_selectedMonth endDateByWeekLevel:i];
[self.weekdays addObject:@[weekFirstDate,weekEndDate]];
该方法同样也是NSDate的一个分类中的方法,这样我们就能获取到第三个数组中的数据了。
确定某年某月、某月有多少周、每个周的第一天和最后一天的方法我们都可以通过NSDate的一个分类中的方法轻松获取,下面是一个别人写的demo,里面包含了NSDate的分类,大家可以下载下来看看。
demo地址:***https://gitee.com/liangsenliangsen/week_selector.git
本篇文章到这里就结束了,愿大家加班不多工资多,男同胞都有女朋友,女同胞都有男朋友。😊
网友评论