NSDateComponents: Найти старше 30 дней

С помощью NSDateComponents Я хочу сравнить дату отъезда с текущей, чтобы увидеть, является ли дата отъезда> 30 дней.

Я использую NSDateComponents особенность, но при отладке, это всегда похоже на действительно большое число, когда я ожидаю, что это будет 3 дня, или 15 дней, или что-то еще.

   NSDate* now = [NSDate date];

    NSUInteger unitFlags = NSDayCalendarUnit;
    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents *components = [calendar components:unitFlags fromDate:departureDate toDate:now options:0];

    NSInteger age = [components day]+1;

Когда я пытаюсь записать возраст

NSLog(@"age (in days) = %lu", (long) age);

он возвращает действительно длинный номер, как 18446744073709551613

Я хотел бы сделать заявление if, которое говорит;

if (age > 30) но я не уверен, как это сделать, когда возвращаемый возраст - это длинное число, подобное этому.

Большое спасибо

2 ответа

Решение
NSDate * dateNotFormatted = [NSDate date];
double now = [dateNotFormatted timeIntervalSince1970];
NSLog(@"%f",now);

NSDateFormatter * dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
NSDate * dateDepareture =[dateFormatter dateFromString:@"29-06-2015"];
double dateDept = [dateDepareture timeIntervalSince1970];
NSLog(@"%f",dateDept);

Проверьте двойное значение на 30 дней...

ИЛИ ЖЕ

NSDateComponents *components;
NSInteger days;

components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay fromDate:[NSDate date] toDate:[dateFormatter dateFromString:@"2-07-2015"] options:0];
days = [components day];
NSLog(@"%ld",(long)days);

Измените код для проверки на 30 дней...

NSDayCalendarUnit NS_CALENDAR_ENUM_DEPRECATED (10_4, 10_10, 2_0, 8_0, "Использовать вместо NSCalendarUnitDay") = NSCalendarUnitDay

NSDate* date30 = [NSDate date];
date30 = [date dateByAddingInterval:86400*30]; 

if([departureDate compare:date30] == NSOrderedDescending){
    //Departure > Today + 30d
}    
else
{
    //Departure < Today + 30d
}

Это то, что вам нужно?

Другие вопросы по тегам