Iphone 如何判断从现在到某个日期的天数?

Iphone 如何判断从现在到某个日期的天数?,iphone,objective-c,ios,xcode,nsdate,Iphone,Objective C,Ios,Xcode,Nsdate,我如何知道从现在到我的应用程序中指定的日期的天数?到目前为止,我已经知道了,但无论日期是什么,每次都会出现“-30”: NSDate * selected = [DatePicker date]; NSString * date = [selected description]; NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit

我如何知道从现在到我的应用程序中指定的日期的天数?到目前为止,我已经知道了,但无论日期是什么,每次都会出现“-30”:

NSDate * selected = [DatePicker date];
NSString * date = [selected description];

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit 
                                                              fromDate:DatePicker.date];

CalLabel1.text = [NSString stringWithFormat:@"%d", [components day]];

NSDateFormatter *temp = [[NSDateFormatter alloc] init];
[temp setDateFormat:@"dd/MM/yyyy"];
NSDate *stDt = [temp dateFromString:[temp stringFromDate:[NSDate date]]];
NSDate *endDt =  [temp dateFromString:[temp stringFromDate:[NSString stringWithFormat:@"%d", [components date]]]];
unsigned int unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit;
NSCalendar *gregorian = [[NSCalendar alloc]
                         initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comps = [gregorian components:unitFlags fromDate:stDt  toDate:endDt  options:0];
int days = [comps day];

NSLog(@"%i", [comps day]);

NSDate
上使用
-timeIntervalSinceNow
怎么样

NSDate *selectedDate = [datePicker date];
NSTimeInterval numberOfSecondsUntilSelectedDate = [selectedDate timeIntervalSinceNow];
NSInteger numberOfDays = numberOfSecondsUntilSelectedDate / 86400; // 86,400 seconds in a day

这将计算从现在到所选日期之间的天数。你对日期格式化程序的所有胡闹都是错误的,没有必要

Swift 3接受答案的版本

let dateComponents = Calendar.current.dateComponents([.day], from: fromDate, to: Date())

// number of days is an optional Int
if let daysCount = dateComponents.day {
    print(daysCount)
}

+1-但是如果86400是一个常数或者写了类似于(60*60*24)的东西,可能更容易阅读。同意。我会在生产代码中使用一个常量,但我觉得一个注释就足以用于演示目的。最好使用日历API,而不是手工计算。这对几天来说很容易,但一旦你想知道几周或几个月,这就不是一件小事了。一般来说,这会更好,因为它考虑了日历中任何相关的怪癖。
let dateComponents = Calendar.current.dateComponents([.day], from: fromDate, to: Date())

// number of days is an optional Int
if let daysCount = dateComponents.day {
    print(daysCount)
}