2012-11-14 64 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

相關問題