2012-11-14 86 views
1

我已经尝试了很多东西,通过我得到的帮助,但我仍然无法弄清楚如何正确地做到这一点。这是我最后做的。天之间的差异当前和即将到来的日期在iOS中

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转换,我没有正确地做? 谢谢。

回答

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)更改代码。

+0

是的,现在,谢谢你的发布。这是一个很大的缓解。 – iOmi

2

你的代码都搞砸了 - toDate和fromDate都是字符串,而不是NSDates。您的日期应该只是currentDate,而您的toDate应该只是datePicker.date。您不需要转换为字符串或使用日期格式化程序获取时间间隔。

1

你当然是在正确的轨道上;然而,你似乎使用两个NSString的方法调用“timeIntervalSinceDate”(即使你将DATE和toDate指定为NSDates,紧随其后,你将这两个变量设置为NSString对象)。

为了得到你正在寻找的时间间隔,请尝试:

[datePicker.date timeIntervalSinceDate:currentDate]; 

这应该让你在正确的时间间隔。此外,您可能要更改leftDays平等

double leftDays = abs(round(interval/86400)); 

这将停止leftDays从一种尴尬的数字,如-1.00005。

1

`将NSString传递给NSDate!这个代码是错误

尝试

NSDate *curDate = [NSDate Date]; 
NSDate *pickerDate = datepicker.date; 

然后使用NSTimeInterval

相关问题