您的位置:首页 > 移动开发 > IOS开发

IOS获取下个月最后一天

2016-07-21 17:45 459 查看
     获取某个月的开始或者结束的一天,是比较常用的一个需求,但真要写~ 要是有点头疼的!查资料查到一脸懵B的时候,看到了这个代码片段

<!-- lang: cpp -->
//    先定义一个遵循某个历法的日历对象
NSCalendar *greCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
//    通过已定义的日历对象,获取某个时间点的NSDateComponents表示,并设置需要表示哪些信息(NSYearCalendarUnit, NSMonthCalendarUnit, NSDayCalendarUnit等)
NSDateComponents *dateComponents = [greCalendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSWeekCalendarUnit | NSWeekdayCalendarUnit | NSWeekOfMonthCalendarUnit | NSWeekOfYearCalendarUnit fromDate:[NSDate date]];
NSLog(@"year(年份): %i", dateComponents.year);
NSLog(@"quarter(季度):%i", dateComponents.quarter);
NSLog(@"month(月份):%i", dateComponents.month);
NSLog(@"day(日期):%i", dateComponents.day);
NSLog(@"hour(小时):%i", dateComponents.hour);
NSLog(@"minute(分钟):%i", dateComponents.minute);
NSLog(@"second(秒):%i", dateComponents.second);

//    Sunday:1, Monday:2, Tuesday:3, Wednesday:4, Friday:5, Saturday:6
NSLog(@"weekday(星期):%i", dateComponents.weekday);

//    苹果官方不推荐使用week
NSLog(@"week(该年第几周):%i", dateComponents.week);
NSLog(@"weekOfYear(该年第几周):%i", dateComponents.weekOfYear);
NSLog(@"weekOfMonth(该月第几周):%i", dateComponents.weekOfMonth);
     想到完全可以通过这个来找到两个月后的第一天~ 然后通过减一天来找到下个月的最后一天,所以,下月最后一天即如下所示:

 
NSCalendar* cal=[NSCalendar currentCalendar];
NSDateComponents *dateComponents = [cal components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:[NSDate date]];
//设置日为1号
dateComponents.day =1;
//设置月份为后延2个月
dateComponents.month +=2;
NSDate * endDayOfNextMonth = [cal dateFromComponents:dateComponents];
//两个月后的1号往前推1天,即为下个月最后一天
endDayOfNextMonth = [endDayOfNextMonth dateByAddingTimeInterval:-1];
 这段代码总体来说,对于找相对月份的第一天,最后一天,第N天来说,都相对简单!比我看到的网上的其他示例更加简洁!

参考资料:http://my.oschina.net/yongbin45/blog/156181
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios