objective-c - 计算时间并获取状态

标签 objective-c ios xcode cocoa-touch

我希望您可以在此方面帮助我:

我正在编写一个应显示商店是否已实际开业的应用程序。
为此,我为每一天和每个营业时间声明了不同的变量/ NSDate-Objects,例如(设置我之前完成的dateformatter):

    NSDate *mondayMorningOpening = [dateFormatter dateFromString:@"08:00"];
    NSDate *montagMorningClosing = [dateFormatter dateFromString:@"12:30"];
    NSDate *mondayNoonOpening = [dateFormatter dateFromString:@"15:00"];
    NSDate *montagNoonClosing = [dateFormatter dateFromString:@"21:30"];

我还为实际时间设置了NSDate:
    NSString *tempDate1 = [dateFormatter stringFromDate:date];
    NSDate *actualTime = [dateFormatter dateFromString:tempDate1];

现在,我要计算实际时间是在商店营业时间的时间范围之前还是之后。我已经做到了:
    if ([actualTime earlierDate: mondayMorningClosing && [aktuelleZeit laterDate: mondayMorningOpening])
        {
         NSLog (@"The shop is open!");
        }
    else if ([actualTime earlierDate: mondayNoonClosing]&& [actualTime laterDate: mondayNoonOpening])
        {
         NSLog (@"The shop is open!");
        }
    else
        {
         NSLog (@"The shop is closed!");
        }

但是无论现在几点,它总是显示“商店开着!”。

也许您有一个想法,该怎么做才能正确显示开业状态...

最佳答案

您误解了EarlyDate和LaterDate的含义。这些方法不是“isEarlierDate”和“isLaterDate”,它们不返回BOOL。这些方法返回NSDate对象,即两个日期中的较早(或更晚)。它们不是nil个对象,因此它们总是被评估为true。

比较两个日期的时间间隔:

if ([actualTime timeIntervalSinceDate: mondayMorningClosing]<0 && [aktuelleZeit timeIntervalSinceDate: mondayMorningOpening]>0)
{
    NSLog (@"The shop is open!");
}

关于objective-c - 计算时间并获取状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13240329/

相关文章:

ios - UITableView 圆角半径无法正常工作

ios - 如何在 ios 7 中授予访问电话地址簿的权限?

ios - 访问 UICollectionView 的父 UIViewController

Swift:如何检查给定字符串的范围是否有效

iphone - 如何在 UIView 中使用 CAAnimation 添加波纹动画

objective-c - 将 NSTimeInterval 转换为 00 :00:00 clock format 中的 NSString

iphone - UISlider 拇指停止拖动

ios - UISegmentedControl 再次按下取消选择段

ios - 像 UBER 一样在 Google map 上移动 GMSMarker

xcode - 在 Xcode Preview 中启用键盘