iOS 獲取本週星期一至星期日的日期

NSDate *now = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comp = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit|NSWeekdayCalendarUnit|NSDayCalendarUnit
                                       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 = 9 - weekDay;
}

NSLog(@"firstDiff:%ld   lastDiff:%ld",firstDiff,lastDiff);    
// 在當前日期(去掉了時分秒)基礎上加上差的天數NSDateComponents *firstDayComp = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:now];
[firstDayComp setDay:day + firstDiff];
NSDate *firstDayOfWeek= [calendar dateFromComponents:firstDayComp];

NSDateComponents *lastDayComp = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:now];
[lastDayComp setDay:day + lastDiff];
NSDate *lastDayOfWeek= [calendar dateFromComponents:lastDayComp];

NSDateFormatter *formater = [[NSDateFormatter alloc] init];
[formater setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSLog(@"星期一開始 %@",[formater stringFromDate:firstDayOfWeek]);
NSLog(@"當前 %@",[formater stringFromDate:now]);
NSLog(@"星期天結束 %@",[formater stringFromDate:lastDayOfWeek]);
相關文章
相關標籤/搜索