1、先解释一下,如题意思为如果今天是星期三,那么我想返回从星期一到星期天的所有日期
2、设计思路:
2.1、通过日期格式得到今天为星期几,将这个“星期几”转换成数字1~7
2.2、通过从0~7循环分别用1-7减去上述数字得到本周每天距离今天的天数差,如今天星期三,那么星期一距离今天-2天,星期二距离今天-1天,星期五距离今天2天
2.3、将天数换算成秒,通过NSDATE的方法得出7天的日期对象,再转换成字符串,搞定!
3、写成NSDATE的分类,直接使用。
代码示例:
NSDate+SA.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | // //? NSDate+SA.h //? // //? Created by yusian on 15-3-19. //? Copyright (c) 2015年 Sian. All rights reserved. // ? #import <foundation /Foundation.h> ? @interface NSDate (SA) ? // 根据日期获取星期,返回数字(1~7) + (NSInteger)weekDayWithDate:(NSDate *)date; ? // 日期转换成字符串,格式如:2015-03-19 17:36:34 + (NSString *)formateDate:(NSDate *)date; ? // 本周日期字符串数组 + (NSArray *)currentWeekDays; ? @end</foundation> |
NSDate+SA.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | // //? NSDate+SA.m //? // //? Created by yusian on 15-3-19. //? Copyright (c) 2015年 Sian. All rights reserved. // ? #import "NSDate+SA.h" ? @implementation NSDate (SA) ? // 本周日期字符串数组 + (NSArray *)currentWeekDays; { ????NSMutableArray *array = [NSMutableArray array]; ????// 获取今天星期几(数字) ????NSInteger today = [self weekDayWithDate:[self date]]; ????for (int i = 0; i < 7; i++) { ????????// 周一到周日七天距离今天的时间差(以秒为单位) ????????double timeInterval = (i + 1 - today) * 24 * 60 * 60; ????????// 周一到周日的DATE对象 ????????NSDate *date = [self dateWithTimeIntervalSinceNow:timeInterval]; ????????// 周一到周日的字符串对象 ????????NSString *dateStr = [self formateDate:date]; ????????// 添加到数组 ????????[array addObject:dateStr]; ????} ????return array; } ? // 日期转换成字符串,格式如:2015-03-19 17:36:34 + (NSString *)formateDate:(NSDate *)date { ????NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; ????formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; ????return [formatter stringFromDate:date]; } ? // 根据日期获取星期,返回数字(1~7) + (NSInteger)weekDayWithDate:(NSDate *)date { ????NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; ????formatter.dateFormat = @"EEEE"; ????// 得到日期那天星期几 ????NSString *weekday = [formatter stringFromDate:date]; ????// 将星期转换成对应数字 ????return [self weekNumberWithWeekDayString:weekday]; } ? // 将星期转换成数字(星期一:1, 星期二:2, 星期三:3 ...) + (NSInteger)weekNumberWithWeekDayString:(NSString *)weekDay { ????if ([weekDay isEqualToString:@"星期一"]) return 1; ????if ([weekDay isEqualToString:@"星期二"]) return 2; ????if ([weekDay isEqualToString:@"星期三"]) return 3; ????if ([weekDay isEqualToString:@"星期四"]) return 4; ????if ([weekDay isEqualToString:@"星期五"]) return 5; ????if ([weekDay isEqualToString:@"星期六"]) return 6; ????if ([weekDay isEqualToString:@"星期日"]) return 7; ????return 0; } ? @end |