判断当前时间是否在一天的某个时间段内,可设置时,分,秒
- (void)viewDidLoad { [super viewDidLoad]; NSDateComponents *fromDateComponents = [[NSDateComponents alloc]init]; NSDateComponents *toDateComponents = [[NSDateComponents alloc]init]; [fromDateComponents setHour:6]; // 开始时间-小时 [toDateComponents setHour:18]; // 结束时间-小时 [toDateComponents setMinute:58]; // 结束时间-分钟 [self isBetweenFromDateComponents:fromDateComponents toComponents:toDateComponents]; } /** * 转化为系统当前地区时间 * * @param date 系统时间 * * @return 系统当前地区时间 */ - (NSDate *)convertSystemLocationDate:(NSDate *)date { NSTimeZone *zone = [NSTimeZone systemTimeZone]; NSTimeInterval interval = [zone secondsFromGMTForDate:date]; return [date dateByAddingTimeInterval:interval]; } /** * 获取当前时间是否在设置的某一个时间段内 * * @param fromComponents 开始时间 * @param toComponents 结束时间 * * @return BOOL */ - (BOOL)isBetweenFromDateComponents:(NSDateComponents*)fromComponents toComponents:(NSDateComponents *)toComponents { NSDate *fromDate = [self getCustomDateeWithDateComponents:fromComponents]; NSDate *toDate = [self getCustomDateeWithDateComponents:toComponents]; // 获取当前时间 NSDate *currDate = [NSDate date]; if ([[self convertSystemLocationDate:currDate] compare:fromDate]== NSOrderedDescending && [[self convertSystemLocationDate:currDate] compare:toDate] == NSOrderedAscending) { return YES; } return NO; } /** * 根据设置的时间返回一个NSDate类型的时间 * * @param dateComponents NSDateComponents * * @return NSDate */ - (NSDate *)getCustomDateeWithDateComponents:(NSDateComponents *)dateComponents { //获取当前时间 NSDate *currentDate = [NSDate date]; NSCalendar *currentCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *currentComps = [[NSDateComponents alloc] init]; NSInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; currentComps = [currentCalendar components:unitFlags fromDate:currentDate]; //设置当天的某个点 NSDateComponents *resultComps = [[NSDateComponents alloc] init]; [resultComps setYear:[currentComps year]]; [resultComps setMonth:[currentComps month]]; [resultComps setDay:[currentComps day]]; [resultComps setHour:[dateComponents hour]]; [resultComps setMinute:[dateComponents minute]]; NSCalendar *resultCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDate *resultDate = [self convertSystemLocationDate:[resultCalendar dateFromComponents:resultComps]]; return resultDate; }