OC:找出某个日期对应的星期的起始和终到日期

说明 日期
首次发布 2016年12月23日
最近更新 2020年07月08日
struct WeekDate {
    NSString *start;
    NSString *end;
};

typedef struct WeekDate WeekDate;

CG_INLINE WeekDate
WeekDateMake(NSString *start, NSString *end) {
  WeekDate p; p.start = start; p.end = end; return p;
}

@interface ViewController 

@property (nonatomic, strong) NSCalendar *calendar;
@property (nonatomic, strong) NSDateFormatter *dateFormatter;

@end

@implement ViewController

///根据传入的日期,找到该日期对应本周周日和周六的日期: `起点为周日,终点为周六`
- (WeekDate)getWeekStartEndDateFrom:(NSDate *)date {
    NSDateComponents *components = [self.calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekday fromDate:date];
    
    //周几
    NSInteger weekDay = components.weekday;
    //几号
    NSInteger day = components.day;
    
    NSInteger startDiff, endDiff;
    if (weekDay == 1) {
        startDiff = -6;
        endDiff = 0;
    } else {
        startDiff = self.calendar.firstWeekday - weekDay;
        endDiff = 7 - weekDay;
    }
    
    components.day = day + startDiff;
    NSDate *startDate = [self.calendar dateFromComponents:components];
    
    components.day = day + endDiff;
    NSDate *endDate = [self.calendar dateFromComponents:components];
    
    return WeekDateMake([self.dateFormatter stringFromDate:startDate], [self.dateFormatter stringFromDate:endDate]);
}

- (NSCalendar *)calendar {
    if (!_calendar) {
        _calendar = [NSCalendar currentCalendar];
    }
    return _calendar;
}

- (NSDateFormatter *)dateFormatter {
    if (!_dateFormatter) {
        _dateFormatter = [[NSDateFormatter alloc] init];
        _dateFormatter.dateFormat = @"yyyy-MM-dd";
    }
    return _dateFormatter;
}

@end
测试
WeekDate curDate = [self getWeekStartEndDateFrom:[NSDate date]];
WeekDate lastDate = [self getWeekStartEndDateFrom:[[NSDate date] dateByAddingTimeInterval:-5*24*3600]];
        
NSLog(@" curDate=%@--%@", curDate.start, curDate.end);
NSLog(@"lastDate=%@--%@", lastDate.start, lastDate.end);

输出:
 curDate=2020-07-05--2020-07-11
lastDate=2020-06-28--2020-07-04
开发时的截图
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容