2011-06-10 171 views
24

可能重複:
How to Get time difference in iPhone減去2 NSDate的對象

I'm獲得的日期和時間,從一個JSON飼料。我需要找到我從Feed獲取的日期與今天的日期和時間之間的差異。任何建議如何我可以做到這一點?

我知道我需要從當前日期中減去當前日期,但我不知道該怎麼做。

例如:從飼料

日期:Date: 2011-06-10 15:00:00 +0000 今天:Date: 2011-06-10 14:50:00 +0000

我需要顯示不同的是十分鐘。

謝謝!

+0

你應該看看http://stackoverflow.com/questions/1427151/how在iphone中獲取時間差異 – 2011-06-10 13:02:09

回答

52

使用的NSDate的-dateWithString:,然後用

NSTimeInterval diff = [date2 timeIntervalSinceDate:date1]; 
+0

謝謝你,它的工作原理! – Magnus 2011-06-10 13:04:11

0

從下面的代碼中,您將得到一個比較兩個NSDate對象的想法。

NSDate *dateOne = [NSDate dateWithString:@"2011-06-10 15:00:00 +0000"]; 
NSDate *dateTwo = [NSDate dateWithString:@"2011-06-10 14:50:00 +0000"]; 

switch ([dateOne compare:dateTwo]) 
{ 
    case NSOrderedAscending: 
     NSLog(@」NSOrderedAscending」); 
     break; 
    case NSOrderedSame: 
     NSLog(@」NSOrderedSame」); 
     break; 
    case NSOrderedDescending: 
     NSLog(@」NSOrderedDescending」); 
     break; 
} 
+0

看看這篇文章http://stackoverflow.com/questions/5562594/difference-between-two-nsdate-objects-result-also-a-nsdate – Jhaliya 2011-06-10 13:03:30

3

您需要在嘗試前輸入日期轉換爲NSDate對象獲取兩個的NSDate對象的差異創建自要把兩個NSDate的對象和比較。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss +0000"]; 
NSDate *startDate = [dateFormatter dateFromString:yourJSONDateString]; 
NSDate *endDate = [NSDate date]; 

CGFloat minuteDifference = [endDate timeIntervalSinceDate:startDate]/60.0; 

格式化assumses的UTC偏移始終爲零。如果不是這樣,請參閱Microsoft's date format string page以瞭解您可以使用的其他格式代碼。

-

編輯:dateWithString方法人也都使用會更好在你的情況下使用,但日期格式是必要的,如果你所得到的日期格式字符串是不完全正確的。我不認爲我曾經使用API​​以正確的格式發送日期,也許我只是不幸運:-(。

+0

CGFloat不是指針 – AAV 2013-02-26 19:14:02

+0

這就是我在提交之前沒有在Xcode中寫我的答案。 – kubi 2013-02-27 21:11:48