2012-03-21 80 views
0

我试图从UIDatePicker(MM-dd格式)获取日期,并检查它是否在两个其他日期的范围内;如何检查日期(从日期选择器)是否在两个其他日期之间? objective-c

我已经尝试过很多不同的方式,我认为我的想法已经走到了很远:) 有人可以帮我做到这一点,它应该是简单的吗?

这是我最后一次尝试代码:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"MM-dd"]; 
NSString *theDate = [dateFormat stringFromDate:birthdateSelector.date]; 
NSDate *birthdate = [dateFormat dateFromString:theDate]; 

NSString *Capricorn_Start = @"12-22" ; 
NSString *Capricorn_End = @"01-19" ; 

if ([birthdate laterDate:[dateFormat dateFromString:Capricorn_End]] && [birthdate earlierDate:[dateFormat dateFromString:Capricorn_Start]]){ 

    NSLog(@"im capricorn"); 
} 

感谢, 阿米尔。

+0

[如何检查两个其他NSDates之间是否发生NSDate]的可能重复(http://stackoverflow.com/questions/1072848/how-to-check-if-an-nsdate-occurs-between-two- other-nsdates) – 2012-03-21 17:57:20

回答

1

如果你有dateAdateBDATEC,并且要检查是否dateA < dateB < DATEC,你可以得到dateA-dateB之间的区别dateB-dateC这将给你diffXdiffY。如果diffX符号与diffY相同符号,这将意味着dateB一个C之间

或者,换句话说,你的代码应该是这样的:

NSTimeInterval diffX = [dateB timeIntervalSinceDate:dateA]; 
NSTimeInterval diffY = [dateC timeIntervalSinceDate:dateB]; 

if (signbit(diffX) == signbit(diffY)) 
{ 
    // dateB is in-between dateA and dateC 
} 
+1

谢谢,谢谢,再次!谢谢 ! – 2012-03-21 16:49:23

2

方法laterDateearlierDate返回NSDate。您应该使用compare:并检查返回值。

0

您可以添加一年(两者相同),然后从1970年开始获取时间,然后进行比较。

相关问题