Iphone 如何判断从现在到某个日期的天数?
我如何知道从现在到我的应用程序中指定的日期的天数?到目前为止,我已经知道了,但无论日期是什么,每次都会出现“-30”: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
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)
}