【发布时间】:2013-07-27 18:58:41
【问题描述】:
我想检查日期限制*(例如:- 22/07/2013 2:30PM -22/07/2013 8:30PM )* 是否有另一个时间限制*(例如:- 22/07/2013 4:30PM -22/07/2013 6:30PM)* 与否。我对这个概念完全陌生。谁能告诉我如何做到这一点。
任何帮助将不胜感激
下面是我试过的代码:
- (void)viewDidLoad
{
[self isDateInterval:@"8/1/2013 8:30am" and:@"8/1/2013 8:40am" fallsWithin:@"8/1/2013 8:30am" and:@"8/1/2013 8:55am"];
[super viewDidLoad];
}
-(BOOL)isDateInterval:(NSString*)startDate1 and:(NSString*)endDate1 fallsWithin:(NSString*)startDate2 and:(NSString*)endDate2
{
BOOL isWithinrange;
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"dd/MM/yyyy hh:mmaa"];
NSTimeInterval ti1 = [[formatter dateFromString:startDate1] timeIntervalSince1970];
NSTimeInterval ti2 = [[formatter dateFromString:endDate1] timeIntervalSince1970];
NSTimeInterval ti3 = [[formatter dateFromString:startDate2] timeIntervalSince1970];
NSTimeInterval ti4 = [[formatter dateFromString:endDate2] timeIntervalSince1970];
if( (ti3 > ti1 && ti3 < ti2) || (ti3 < ti1 && ti4 > ti1) )
{
//Date with in range
isWithinrange=TRUE;
}
else
{
isWithinrange=FALSE;
//Not with in range
}
return isWithinrange;
}
我希望输出为“isWithin”,因为一个时间间隔的一部分正在进入另一个时间间隔
【问题讨论】:
-
日期是如何存储的?成对?你可以使用谓词。
-
@Wain 日期将存储到 SQLite 中。格式如 MM/DD/YYYY Time:aa
-
您想知道第一个时间间隔是否完全包含在第二个时间间隔中,或者它们是否在某处重叠?对于您的示例日期,第二个时间间隔完全包含在第一个时间间隔内。因此,它们重叠。但是 22/07/2013 2:30PM - 22/07/2013 5:30PM 与您的第二个间隔重叠,但不包含它。您要计算哪个?
-
如果你想检查“重叠时间间隔”,那么你应该重命名你的问题
-
看看它可能会有所帮助:github.com/Chintan-Dave/CRDValidation
标签: iphone ios objective-c nsdate