Я пытаюсь проверить, есть ли 2 даты и времени между текущим временем. Я сделал эту функцию для этого. Вот функцияNSDateComponents - установить компоненты буднего дня
-(BOOL)getStartHour:(NSInteger)startHour getStartMin:(NSInteger)startMin getEndHour:
(NSInteger)endHour getEndMin:(NSInteger)endMin {
NSDate *now = [NSDate date];
NSDate *startOfToday;
[[NSCalendar currentCalendar] rangeOfUnit:NSDayCalendarUnit startDate:&startOfToday interval:NULL forDate:now];
NSDateComponents *startComps = [[NSDateComponents alloc] init];
startComps.weekday = 1;
startComps.hour = startHour;
startComps.minute = startMin;
//
NSDateComponents *endComps = [[NSDateComponents alloc] init];
endComps.hour = endHour;
endComps.minute = endMin;
endComps.weekday = 3;
NSDate *startDate = [[NSCalendar currentCalendar] dateByAddingComponents:startComps toDate:startOfToday options:0];
NSDate *endDate = [[NSCalendar currentCalendar] dateByAddingComponents:endComps toDate:startOfToday options:0];
NSLog(@"%d", [startComps weekday]);
// NSLog(@"%@", startDate);
// NSLog(@"%@", now);
if ([startDate timeIntervalSince1970] < [now timeIntervalSince1970] && [now timeIntervalSince1970] < [endDate timeIntervalSince1970]) {
return YES;
}
else return NO;
}
Когда я вхожу [startComps будний день] он записывает, 0. Но сегодня вторник, который не имеет никакого смысла для меня. Я хочу проверить, существует ли эта дата между понедельником и днем среды, которую я бы предположил как 1 - 3 или 0 - 2. Но почему она регистрируется сегодня (вторник) как 0?
Другими словами, я ищу dayOfWeek как целое число. SO понедельник - 1, вторник 2 и т. Д.
Thakns за помощью.
Просто уточнить: вы пытаетесь определить, если текущая дата находится между двумя другими датами? Если да, почему бы не использовать 'compare:' или некоторые простые математические данные на временном интервале? – Droppy
@ Droppy да, я сравниваю много (например, 50) дат/времени, например, я хочу знать, если его понедельник (день 1) или вторник (день 2), и это между 7 утра и 6 вечера –
Я не думаю имеет смысл добавить будние дни в dateByAddingComponents. Вы должны добавлять простые старые дни. И если вы читаете спецификацию, 'weekday' начинается с 1 воскресенья. –