减去两个NSDate对象

时间:2011-06-10 12:55:14

标签: iphone xcode json nsdate nstimeinterval

  

可能重复:
  How to Get time difference in iPhone

我从JSON Feed获取日期和时间。我需要找到从饲料中获得的日期与今天的日期和时间之间的差异。有什么建议我怎么做?

我知道我需要用从Feed中获取的日期减去当前日期,但我不知道该怎么做。

前:

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

我需要显示差异是十分钟。

谢谢!

3 个答案:

答案 0 :(得分:53)

使用NSDate的-dateWithString:从字符串创建两个NSDate对象,然后使用

获取两个NSdate对象的区别
NSTimeInterval diff = [date2 timeIntervalSinceDate:date1];

答案 1 :(得分:4)

在尝试比较之前,您需要将输入日期转换为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;

格式化程序确定UTC偏移量始终为零。如果不是这样,请参阅Microsoft's date format string page了解您可以使用的其他格式代码。

-

编辑:其他人使用的dateWithString方法最好在您的情况下使用,但如果您获得的日期格式字符串不完全正确,则必须使用日期格式化程序。我不认为我曾经使用过以正确格式发送日期的API,也许我只是运气不好: - (。

答案 2 :(得分: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;
}