- (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;
}