ios – 从一天中的小时数返回打开,关闭或关闭的功能

ios – 从一天中的小时数返回打开,关闭或关闭的功能,第1张

概述我有一堆小时的 *** 作我想确定商店是开放,关闭还是在30,29,28,27 ……我关闭的时间我在 Xcode / Objectic-C中这样做.现在我必须这样做,让我们说50个小时的 *** 作.我已经创建了一个函数来执行此 *** 作,但它效率不高并且涉及很多if-else语句.这是一个小时的 *** 作样本 Monday - Thursday7:30am - MidnightFriday7:30am - 10:00 我有一堆小时的 *** 作我想确定商店是开放,关闭还是在30,29,28,27 ……我关闭的时间我在 Xcode / Objectic-C中这样做.现在我必须这样做,让我们说50个小时的 *** 作.我已经创建了一个函数来执行此 *** 作,但它效率不高并且涉及很多if-else语句.这是一个小时的 *** 作样本

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 – 从一天中的小时数返回打开,关闭或关闭的功能所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1032692.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-24
下一篇2022-05-24

发表评论

登录后才能评论

评论列表(0条)

    保存