我通过我的帮助尝试了很多东西,但我仍然无法弄清楚如何正确地做到这一点。这是我最后做的。
NSDateFormatter *tempFormatter = [[NSDateFormatter alloc]init];
[tempFormatter setDateFormat:@"dd-MM-yyy"];
NSDate *currentDate = [NSDate date];
NSDate *fromDate = [NSString stringWithFormat:@"%@",[tempFormatter stringFromDate:currentDate]];
NSLog(@"currentDate %@", fromDate);
NSDate *toDate = [NSString stringWithFormat:@"%@",[tempFormatter stringFromDate:datePicker.date]];
NSLog(@"toDate %@", toDate);
NSTimeInterval interval = [toDate timeIntervalSinceDate:fromDate];
double leftDays = interval/86400;
NSLog(@"Total interval Between::%g",leftDays);
告诉我我做错了什么。是NSDate转换,我做得不好? 感谢。
答案 0 :(得分:2)
你的代码搞砸了 - toDate和fromDate都是字符串而不是NSDates。你的日期应该是currentDate,你的toDate应该只是datePicker.date。转换为字符串或使用日期格式化程序来获取时间间隔时,您无需执行任何操作。
答案 1 :(得分:2)
此行正在产生问题。
NSDate *toDate = [NSString stringWithFormat:@"%@",[tempFormatter stringFromDate:datePicker.date]];
它将toDate
的类型从NSDate更改为__NSCFString
。 NSTimeInterval
采用NSDate类型的两个参数,但在您的情况下只有fromDate
是NSDate类型。
使用这些行更改您的代码
NSDate *currentDate = [NSDate date];
NSDate *toDate = datePicker.date;
NSTimeInterval interval = [toDate timeIntervalSinceDate:currentDate];
肯定会有用(inshaAllah)。
答案 2 :(得分:1)
你当然是在正确的轨道上;但是,您似乎使用两个NSString调用“timeIntervalSinceDate”(即使您将fromDate和toDate指定为NSDates,请在此之后查看 - 您将这两个变量设置为NSString对象)。
要获得您正在寻找的间隔,请尝试:
[datePicker.date timeIntervalSinceDate:currentDate];
这应该让你得到正确的间隔。此外,您可能希望将leftDays更改为等于
double leftDays = abs(round(interval/86400));
这将使leftDays成为像-1.00005这样的尴尬数字。
答案 3 :(得分:1)
`将NSString传递给NSDate!这段代码错了
试
NSDate *curDate = [NSDate Date];
NSDate *pickerDate = datepicker.date;
然后使用NSTimeInterval
比较这两个日期