ios – 从一天中的小时数返回打开,关闭或关闭的功能
发布时间:2020-12-14 18:11:57 所属栏目:百科 来源:网络整理
导读:我有一堆小时的操作我想确定商店是开放,关闭还是在30,29,28,27 ……我关闭的时间我在 Xcode / Objectic-C中这样做.现在我必须这样做,让我们说50个小时的操作.我已经创建了一个函数来执行此操作,但它效率不高并且涉及很多if-else语句.这是一个小时的操作样本
我有一堆小时的操作我想确定商店是开放,关闭还是在30,29,28,27 ……我关闭的时间我在
Xcode / Objectic-C中这样做.现在我必须这样做,让我们说50个小时的操作.我已经创建了一个函数来执行此操作,但它效率不高并且涉及很多if-else语句.这是一个小时的操作样本
Monday - Thursday 7:30am - Midnight Friday 7:30am - 10:00pm Saturday 9:00am - 10:00pm Sunday 9:00am - Midnight 这是我的功能以及我如何处理它 -(BOOL) dateAndTime:(NSDate*)date getStartDay:(NSInteger)startDay getStartHour:(NSInteger)startHour getStartMin:(NSInteger)startMin getEndDay:(NSInteger)endDay getEndHour:(NSInteger)endHour getEndMin:(NSInteger)endMin{ NSCalendar *calendar = [NSCalendar currentCalendar]; const NSCalendarUnit units = NSWeekdayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit; NSDateComponents *comps = [calendar components:units fromDate:date]; if (comps.weekday == 1) { comps.weekday = 7; } else comps.weekday = comps.weekday - 2; NSDate *startOfToday; [[NSCalendar currentCalendar] rangeOfUnit:NSDayCalendarUnit startDate:&startOfToday interval:NULL forDate:date]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; NSTimeZone *timeZone = [NSTimeZone localTimeZone]; [dateFormatter setDateFormat:@"HH:mm"]; [dateFormatter setTimeZone:timeZone]; NSString *dateString = [dateFormatter stringFromDate:date]; NSDate *startDate = [dateFormatter dateFromString:[NSString stringWithFormat:@"%ld:%ld",(long)startHour,(long)startMin]]; NSDate *endDate = [dateFormatter dateFromString:[NSString stringWithFormat:@"%ld:%ld",(long)endHour,(long)endMin]]; NSString *startDateString = [dateFormatter stringFromDate:startDate]; NSString *endDateString = [dateFormatter stringFromDate:endDate]; if ([startDateString compare:dateString] == NSOrderedAscending && [dateString compare:endDateString] == NSOrderedAscending && startDay <= comps.weekday && comps.weekday <= endDay) { return YES; } else return NO; } 现在我过了一天,从0-6(0是星期一),然后是24小时的时间.然后像这样使用它: if ([self dateAndTime:date getStartDay:0 getStartHour:7 getStartMin:30 getEndDay:3 getEndHour:23 getEndMin:30] == YES) text = @"Open"; else if ([self dateAndTime:date getStartDay:0 getStartHour:23 getStartMin:30 getEndDay:3 getEndHour:24 getEndMin:0] == YES) text = [NSString stringWithFormat:@"Closes in %@ min",countdownNumber]; else text = @"Closed"; 正如你所看到的那样,对于每周的所有日子和每天的小时,它需要大量的if语句并且非常糟糕.仅举一例,它需要8个if-else语句(非常耗时) 现在这个问题的基础是我怎样才能使这个更有效率/更好的方法来做到这一点,而在过去的30分钟里能够倒计时? 我已经做了一些研究,找不到有什么东西可以倒计时什么时候关闭并且效率很高. 如果您需要该示例,或者想要查看https://gist.github.com/spennyf/b0b18e31c3e9deaa0455,则以下是该示例的完整if-else语句 感谢您的帮助和/或建议:) 编辑 这是我的.m文件的顶部我有这个 @interface HomeTableViewController () { ShopHours WeekSchedule[]; } @end 但是这给了我在评论中谈到的编译错误,如何设置这个变量以便它可以在整个这个.m文件中使用?现在我只是传递它作为功能的额外栏杆,应该没问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |