Добрый день! Я знаю, что этот код на Objective-C и я пишу на форум swift, но все же, присутствует баг с временем, есть некий datepicker, допустимое время которое можно выбрать должно быть с 9 утра до 3 ночи следующего дня, сейчас условие работает не правильно, если я выберу дату сегодня в 21, то выдаст ошибку о том, что заведение работает с 9 утра до 3 ночи, можете помочь пофиксить условие?
- (BOOL)isWorkingYesterday:(NSDate *)date {
if (date.timeIntervalSince1970 == 0.0) {
date = [NSDate date];
}
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSCalendarUnit units = (NSCalendarUnitHour | NSCalendarUnitMinute);
NSDateFormatter *formatter = [NSDateFormatter defaultTimeFormatter];
NSDate *yesterday = [NSDate yesterdayDateForDate:date];
NSString *yesterdayStartString = [self startForDate:yesterday];
NSString *yesterdaEndString = [self endForDate:yesterday];
NSString *startDayString = @"00:00";
NSString *orderDateString = [formatter stringFromDate:date];
NSDate *yesterdayStart = [formatter dateFromString:yesterdayStartString];
NSDate *yesterdayEnd = [formatter dateFromString:yesterdaEndString];
NSDate *startDay = [formatter dateFromString:startDayString];
NSDate *orderDate = [formatter dateFromString:orderDateString];
BOOL isInYesterdayRange = (orderDate.timeIntervalSince1970 >= startDay.timeIntervalSince1970
&& orderDate.timeIntervalSince1970 < yesterdayEnd.timeIntervalSince1970);
if (yesterdayStart.timeIntervalSince1970 >= yesterdayEnd.timeIntervalSince1970 && isInYesterdayRange) {
return YES;
}
return NO;
}
Вызывается так
if (![order.restaurant isWorkingYesterday:order.deliveryDate]) {
NSString *start = [order.restaurant startForDate:order.deliveryDate];
NSString *finish = [order.restaurant endForDate:order.deliveryDate];
// вывод ошибки с временем, о том, что заведение работает с 9 до 3 ночи
message = RESTAURANT_IN_NON_WORKING_HOURS(start, finish);
}