У меня три даты: (1) previousDate (2) currentDate (3) nextDate, Я хочу проверить, является ли currentDate позже предыдущей даты и раньше, чем nextDate. Как это сделать?
Как сравнить две даты?
Ответ 1
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;
}
Ответ 2
Я полагаю, вы используете класс NSDate.
Вы можете использовать isEqualToDate для сравнения двух объектов NSDate. А также earlierDate и laterDate, чтобы проверить currentdate больше, чем предыдущая дата и меньше, чем следующая дата.
Ответ 3
Я просто использовал это, чтобы проверить это:
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:"
Ответ 4
Объекты NSDate также реализуют хорошо документированный метод -compare:.
Ответ 5
Просто выполните два сравнения, используя сообщение compare
NSDate
:
if ([previousDate compare:currentDate] == NSOrderedAscending &&
[nextDate compare:currentDate] == NSOrderedDescending) {
NSLog(@"current date is in between previous and next date (non-inclusive)");
}