我希望您可以在此方面帮助我:
我正在编写一个应显示商店是否已实际开业的应用程序。
为此,我为每一天和每个营业时间声明了不同的变量/ 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/