給出指定日期, 獲取日期一周的日期(從周一到周日)
- (void)doTest {
NSDate *nowDate = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy/MM/dd";
nowDate = [formatter dateFromString:@"2020/03/18"]; //
NSArray *dates = [self currentWeekDaiesForDate:nowDate];
formatter.weekdaySymbols = @[@"周日", @"周一", @"周二", @"周三", @"周四", @"周五", @"周六", ];
for (NSDate *date in dates) {
formatter.dateFormat = @"MM/dd";
NSString *dateInfo = [formatter stringFromDate:date];
formatter.dateFormat = @"EEEE";
NSString *weekInfo = [formatter stringFromDate:date];
NSLog(@"%@ --> %@", dateInfo, weekInfo);
}
}
- (NSArray *)currentWeekDaiesForDate:(NSDate *)nowDate {
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *nowComp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekday fromDate:nowDate];
// 獲取今天是周幾
NSInteger weekDay = [nowComp weekday];
// 獲取今天是幾號(hào)
NSInteger day = [nowComp day];
// 計(jì)算當(dāng)前日期和本周的星期一相差天數(shù)
//天/一/二/三/四/五/六
//1 /2 /3 /4 /5 /6 / 7
NSInteger detal;
if (weekDay == 1) {
detal = -6;
} else {
detal = -(weekDay-2);
}
//獲取周一日期
NSDateComponents *baseDayComp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:nowDate];
[baseDayComp setDay:day + detal];
NSDate *mondayDate = [calendar dateFromComponents:baseDayComp];
NSMutableArray *results = [[NSMutableArray alloc] init];
//計(jì)算從周一開(kāi)始的七天日期
for (int i = 0; i < 7; i ++) {
//從現(xiàn)在開(kāi)始的24小時(shí)
NSTimeInterval secondsPerDay = i * 24*60*60;
NSDate *curDate = [NSDate dateWithTimeInterval:secondsPerDay sinceDate:mondayDate];
// 時(shí)區(qū)轉(zhuǎn)換
NSTimeZone *zone = [NSTimeZone systemTimeZone];
NSInteger interval = [zone secondsFromGMTForDate:curDate];
NSDate *localeDate = [curDate dateByAddingTimeInterval: interval];
[results addObject:localeDate];
}
return results;
}