Подтвердить что ты не робот

Вычитание двух объектов NSDate

Возможный дубликат:
Как получить разницу во времени в iPhone

Я получаю дату и время из канала JSON. Мне нужно найти разницу между датой, которую я получаю от фида, и сегодняшней датой и временем. Любые предложения, как я могу это сделать?

Я знаю, что мне нужно вычесть текущую дату с датой, которую я получаю из фида, но я не знаю, как это сделать.

Пример:

Дата из фида: Date: 2011-06-10 15:00:00 +0000 Сегодня: Date: 2011-06-10 14:50:00 +0000

Мне нужно показать, что разница составляет десять минут.

Спасибо!

4b9b3361

Ответ 1

Создайте два объекта NSDate из строк, используя NSDate -dateWithString:, затем получите разницу между двумя объектами 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 для других кодов формата, которые вы можете использовать.

-

Изменить: метод dateWithString, который все остальные используют, будет лучше использовать в вашей ситуации, но форматирование даты необходимо, если строка формата даты, которую вы получаете, не совсем верна. Я не думаю, что когда-либо использовал API, который отправлял даты в правильном формате, возможно, мне просто не повезло: - (.

Ответ 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;
}