检测是否在时间段之间

时间:2014-04-21 21:57:31

标签: ios nscalendar nsdatecomponents

我对下面的代码有疑问。它的问题是什么?我尝试将NSUInteger定义为int,但它仍然没有用。

NSCalendar *cal = [NSCalendar currentCalendar];
NSDateComponents *components = [cal components:NSHourCalendarUnit fromDate:nowNow];
NSLog(@"%ld",[components hour]);
NSUInteger *timeHour = [components hour];
if ( timeHour < 5 &&  timeHour > 9){}

这段代码应该在早上5点到9点之间检测到。

2 个答案:

答案 0 :(得分:2)

timeHour < 5自动返回true的任何内容都将为timeHour > 9返回false。你和这两个条件在同一时间都不是真的,所以你总是会返回错误。

此外,如果if块中没有任何内容,则无法判断它是否正在执行。

你可能正在寻找更像这样的东西:

if (timeHour >= 5 && timeHour <= 9) {
    // stuff
}
对于timeHour >= 5大于或等于5的任何内容,

timeHour都会返回true。

对于timeHour <= 9小于或等于9的任何内容,

timeHour都会返回true。

仅当a && ba都为真时,

b才会返回true。


编辑:还有...... NSUInteger *timeHour = [components hour];

我刚抓到的这条线路存在问题。您将timeHour定义为NSUInteger指针,而不是NSUInteger。摆脱*并重试。

答案 1 :(得分:0)

我通过将'if'行替换为:

来修复此问题
if ( [components hour] <= 5 && [components hour] >= 9){

并删除NSUInteger行。