Как сравнить две даты? - PullRequest
       2

Как сравнить две даты?

2 голосов
/ 04 февраля 2010

У меня есть три даты: (1) previousDate (2) currentDate (3) nextDate, я хочу проверить, является ли currentDate позже предыдущей даты и раньше, чем nextDate.Как мне это сделать?

Ответы [ 5 ]

7 голосов
/ 20 апреля 2011
 NSDateFormatter *df= [[NSDateFormatter alloc] init];

[df setDateFormat:@"yyyy-MM-dd"];

NSDate *dt1 = [[NSDate alloc] init];

NSDate *dt2 = [[NSDate alloc] init];

dt1=[df dateFromString:@"2011-02-25"];

dt2=[df dateFromString:@"2011-03-25"];

NSComparisonResult result = [dt1 compare:dt2];

switch (result)

{

     case NSOrderedAscending: NSLog(@"%@ is greater than %@", dt2, dt1); break;

     case NSOrderedDescending: NSLog(@"%@ is less %@", dt2, dt1); break;

     case NSOrderedSame: NSLog(@"%@ is equal to %@", dt2, dt1); break;

     default: NSLog(@"erorr dates %@, %@", dt2, dt1); break;
}
6 голосов
/ 04 февраля 2010

Полагаю, вы используете класс NSDate .

Вы можете использовать isEqualToDate для сравнения двух объектов NSDate. А также beforeDate и LaterDate для проверки того, что текущая дата больше предыдущей и меньше следующей.

4 голосов
/ 01 февраля 2013

Я просто использовал это, чтобы проверить это:

if ([[currentDate laterDate:nextDate] isEqualToDate:nextDate]) {
    NSLog(@"currentDate is earlier than nextDate");
}
if ([[currentDate laterDate:previousDate] isEqualToDate:currentDate]) {
    NSLog(@"currentDate is later then previousDate");
}

отлично сработало для меня! Спасибо @Luca Matteis за подсказку "LaterDate:"

0 голосов
/ 04 июля 2014

Просто выполните два сравнения, используя сообщение compare: NSDate:

if ([previousDate compare:currentDate] == NSOrderedAscending &&
    [nextDate compare:currentDate] == NSOrderedDescending) {
    NSLog(@"current date is in between previous and next date (non-inclusive)");
}
0 голосов
/ 04 февраля 2010

NSDate объекты также реализуют хорошо документированный метод -compare:

...