如何检查日期(来自日期选择器)是否在两个其他日期之间? Objective-C的

时间:2012-03-21 15:10:15

标签: iphone objective-c nsdateformatter uidatepicker

我正在尝试从UIDatePicker(MM-dd格式)获取日期,并检查它是否在其他两个日期的范围内;

我已经尝试了很多不同的方式,我认为我的思想已经走到了尽头:) 有人能帮我做到这么简单吗?

这是我上次尝试的代码:

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");
}

谢谢, 阿米尔。

3 个答案:

答案 0 :(得分:2)

方法laterDateearlierDate返回NSDate

您应该使用compare:并检查返回值。

答案 1 :(得分:1)

如果你有 dateA dateB dateC ,你想检查 dateA &lt; dateB &lt; dateC ,您可以获得 dateA-dateB dateB-dateC 之间的区别,它将为您提供 diffX 和< EM> diffY 。如果 diffX 符号等于 diffY 符号,则表示 dateB 位于 A C之间

或者,换句话说,您的代码将如下所示:

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

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

答案 2 :(得分:0)

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