Как проверить, находится ли дата (от даты выбора) между двумя другими датами?Objective-C - PullRequest
0 голосов
/ 21 марта 2012

Я пытаюсь получить дату из 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 ]

2 голосов
/ 21 марта 2012

Методы laterDate и earlierDate возвращают NSDate.

Вы должны использовать вместо сравнить: и проверить возвращаемое значение.

1 голос
/ 21 марта 2012

Если у вас есть dateA , dateB и dateC , и вы хотите проверить, если dateA <<em> dateB <<em> dateC , вы можете получить разницу между dateA-dateB и dateB-dateC , которая даст вам diffX и 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
}
0 голосов
/ 21 марта 2012

Вы можете добавить год (один и тот же для обоих), а затем получить время, например, с 1970 года, и затем провести сравнение.

...