【问题标题】:Subtracting two NSDate objects [duplicate]减去两个 NSDate 对象[重复]
【发布时间】:2011-06-10 12:55:14
【问题描述】:

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

我从 JSON 提要中获取日期和时间。我需要找出我从提要中获得的日期与今天的日期和时间之间的差异。有什么建议我可以如何做到这一点?

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

例如:

来自提要的日期:Date: 2011-06-10 15:00:00 +0000 今天:Date: 2011-06-10 14:50:00 +0000

我需要显示相差十分钟。

谢谢!

【问题讨论】:

标签: iphone xcode json nsdate nstimeinterval


【解决方案1】:

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

得到两个 NSdate 对象的差异
NSTimeInterval diff = [date2 timeIntervalSinceDate:date1];

【讨论】:

    【解决方案2】:

    在尝试比较之前,您需要将输入日期转换为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,也许我只是不走运:-(。

    【讨论】:

    • CGFloat 不是指针。
    • 这就是我在提交之前没有在 Xcode 中写下答案的结果。
    【解决方案3】:

    从下面的代码中,您将了解比较两个 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;
    }
    

    【讨论】:

    猜你喜欢
    • 2015-11-19
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 2012-10-13
    • 1970-01-01
    相关资源
    最近更新 更多