NSDateComponents :查找超过 30 天的时间

NSDateComponents : Find older than 30 days

使用 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);

它 returns 一个非常长的数字,例如 18446744073709551613

我想做一个 if 语句说;

if (age > 30) 但是当返回的年龄是一个像这样的长数字时,我不确定如何做到这一点。

非常感谢

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, "Use NSCalendarUnitDay instead") = NSCalendarUnitDay

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

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

是你需要的吗?