首先获取当前星期几:
NSDate *now = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *dateComponents = [calendar components:NSCalendarUnitWeekday | NSCalendarUnitHour fromDate:now];
NSInteger weekday = [dateComponents weekday];
Apple 文档将工作日定义为:
工作日单位是数字 1 到 n,其中 n 是一周中的天数。例如,在公历中,n 为 7,星期日由 1 表示。
接下来计算要添加多少天才能到达下个星期日 5 点:
NSDate *nextSunday = nil;
if (weekday == 1 && [dateComponents hour] < 5) {
// The next Sunday is today
nextSunday = now;
} else {
NSInteger daysTillNextSunday = 8 - weekday;
int secondsInDay = 86400; // 24 * 60 * 60
nextSunday = [now dateByAddingTimeInterval:secondsInDay * daysTillNextSunday];
}
要在 5:00 获得它,您只需将小时和分钟更改nextSunday
为 5:00。查看从 [NSDate date] 获取当前日期,但将时间设置为上午 10:00