iOS 获取一周的每一天
2016-05-26 18:45
447 查看
最近做项目遇到要获取当前时间所在一周的时间,通过网上查阅资料解决了,在这里记录一下。
打印结果:
weekDay:5 day:26
firstDiff:-4 lastDiff:2
一周开始 2016-05-22
当前 2016-05-26
一周结束 2016-05-28
[
2016年05日22–星期日,
2016年05日23–星期一,
2016年05日24–星期二,
2016年05日25–星期三,
2016年05日26–星期四,
2016年05日27–星期五,
2016年05日28–星期六
]
/** * 获取当前时间所在一周的第一天和最后一天 */ - (void)getCurrentWeek { NSDate *now = [NSDate date]; NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponents *comp = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitWeekday fromDate:now]; // 得到星期几 // 1(星期天) 2(星期二) 3(星期三) 4(星期四) 5(星期五) 6(星期六) 7(星期天) NSInteger weekDay = [comp weekday]; // 得到几号 NSInteger day = [comp day]; NSLog(@"weekDay:%ld day:%ld",weekDay,day); // 计算当前日期和这周的星期一和星期天差的天数 long firstDiff,lastDiff; if (weekDay == 1) { firstDiff = 1; lastDiff = 0; }else{ firstDiff = [calendar firstWeekday] - weekDay; lastDiff = 7 - weekDay; } NSArray *currentWeeks = [self getCurrentWeeksWithFirstDiff:firstDiff lastDiff:lastDiff]; NSLog(@"firstDiff:%ld lastDiff:%ld",firstDiff,lastDiff); // 在当前日期(去掉了时分秒)基础上加上差的天数 NSDateComponents *firstDayComp = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:now]; [firstDayComp setDay:day + firstDiff]; NSDate *firstDayOfWeek= [calendar dateFromComponents:firstDayComp]; NSDateComponents *lastDayComp = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:now]; [lastDayComp setDay:day + lastDiff]; NSDate *lastDayOfWeek= [calendar dateFromComponents:lastDayComp]; NSDateFormatter *formater = [[NSDateFormatter alloc] init]; [formater setDateFormat:@"yyyy-MM-dd"]; NSLog(@"一周开始 %@",[formater stringFromDate:firstDayOfWeek]); NSLog(@"当前 %@",[formater stringFromDate:now]); NSLog(@"一周结束 %@",[formater stringFromDate:lastDayOfWeek]); NSLog(@"%@",currentWeeks); } //获取一周时间 数组 - (NSMutableArray *)getCurrentWeeksWithFirstDiff:(NSInteger)first lastDiff:(NSInteger)last{ NSMutableArray *eightArr = [[NSMutableArray alloc] init]; for (NSInteger i = first; i < last + 1; i ++) { //从现在开始的24小时 NSTimeInterval secondsPerDay = i * 24*60*60; NSDate *curDate = [NSDate dateWithTimeIntervalSinceNow:secondsPerDay]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"M月d日"]; NSString *dateStr = [dateFormatter stringFromDate:curDate];//几月几号 // NSString *dateStr = @"5月31日"; NSDateFormatter *weekFormatter = [[NSDateFormatter alloc] init]; [weekFormatter setDateFormat:@"EEEE"];//星期几 @"HH:mm 'on' EEEE MMMM d"]; NSString *weekStr = [weekFormatter stringFromDate:curDate]; //组合时间 NSString *strTime = [NSString stringWithFormat:@"%@(%@)",dateStr,weekStr]; [eightArr addObject:strTime]; } return eightArr; }
打印结果:
weekDay:5 day:26
firstDiff:-4 lastDiff:2
一周开始 2016-05-22
当前 2016-05-26
一周结束 2016-05-28
[
2016年05日22–星期日,
2016年05日23–星期一,
2016年05日24–星期二,
2016年05日25–星期三,
2016年05日26–星期四,
2016年05日27–星期五,
2016年05日28–星期六
]
相关文章推荐
- iOS-OC-获取WiFi信息
- ios NSString 截取汉字 数字 字母
- iOS图书动画
- ios新特征 ARC详解
- iOS8 下定位失败问题
- iOS使用NSMutableAttributedString 实现富文本(不同颜色字体、下划线等)
- ios基础知识整理2
- 掌握iOS8中的动态文本
- iOS CocoaPods安装和使用图解
- iOS 获取手机系统属性最后附上获取来电手机号码(经本人测试该方法无法获取)
- IOS高级笔试题
- ionic emulate ios 运行失败问题
- iOS 在其他页面跳转到tabBarController的子控制器
- iOS 分类之NSString+MD5
- iOS 7系列译文:忘记NSURLConnection,拥抱NSURLSession吧!
- 直播系列---资源收集_测试
- 用C#保存IOS发送的图片
- IOS 8.1以后的弹出框代码
- 漫谈 iOS Crash 收集框架
- iOS应用适配IPV6