
Monday - Thursday7:30am - MIDnightFrIDay7:30am - 10:00pmSaturday9:00am - 10:00pm Sunday9: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文件中使用?现在我只是传递它作为功能的额外栏杆,应该没问题. 总结
以上是内存溢出为你收集整理的ios – 从一天中的小时数返回打开,关闭或关闭的功能全部内容,希望文章能够帮你解决ios – 从一天中的小时数返回打开,关闭或关闭的功能所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)