【发布时间】:2015-01-06 07:26:35
【问题描述】:
我想检查当前时间是否在字符串提供的范围内。
例如:范围 = 10:30 - 15:45,当前时间为 11:50,在这种情况下,方法应返回 YES,否则返回 NO(对于 15:50)。
我正在使用以下代码,它工作正常。但我正在寻找一些优化的方法。任何人都可以建议我,还有什么其他好的方法可以达到同样的效果。
-(BOOL)checkTimeRange :(NSString *)timeRange
{
NSUInteger lowerRange = [[timeRange substringWithRange:NSMakeRange(0, 2)] integerValue] * 60* 60 + [[timeRange substringWithRange:NSMakeRange(3, 2)] integerValue] * 60;
NSUInteger upperRange = [[timeRange substringWithRange:NSMakeRange(6, 2)] integerValue] * 60 * 60 + [[timeRange substringWithRange:NSMakeRange(9, 2)] integerValue] * 60;
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitHour fromDate:[NSDate date]];
NSInteger hour = [components hour];
components = [[NSCalendar currentCalendar] components:NSCalendarUnitMinute fromDate:[NSDate date]];
NSInteger minute = [components minute];
NSUInteger currentTime = hour *60*60 + minute*60;
if(currentTime >= lowerRange && currentTime <= upperRange)
return YES;
return NO;
}
【问题讨论】:
-
针对什么进行了优化?代码行数?速度?做过任何分析吗?如果它有效,你为什么要改变它?
-
我想让它简短,所以优化代码行数
-
这个问题似乎跑题了,因为它是关于代码审查的,属于codereview.stackexchange.com
-
您实际上可以删除更改行并将所有内容变为 1 行。但这不会提高性能,反而会使可读性变差。
标签: objective-c datetime string-parsing