Ответ 1
Создайте два объекта NSDate из строк, используя NSDate -dateWithString:
, затем получите разницу между двумя объектами NSdate, используя
NSTimeInterval diff = [date2 timeIntervalSinceDate:date1];
Возможный дубликат:
Как получить разницу во времени в iPhone
Я получаю дату и время из канала JSON. Мне нужно найти разницу между датой, которую я получаю от фида, и сегодняшней датой и временем. Любые предложения, как я могу это сделать?
Я знаю, что мне нужно вычесть текущую дату с датой, которую я получаю из фида, но я не знаю, как это сделать.
Пример:
Дата из фида: Date: 2011-06-10 15:00:00 +0000
Сегодня: Date: 2011-06-10 14:50:00 +0000
Мне нужно показать, что разница составляет десять минут.
Спасибо!
Создайте два объекта NSDate из строк, используя NSDate -dateWithString:
, затем получите разницу между двумя объектами NSdate, используя
NSTimeInterval diff = [date2 timeIntervalSinceDate:date1];
Вам необходимо преобразовать дату ввода в объект 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, который отправлял даты в правильном формате, возможно, мне просто не повезло: - (.
Из кода ниже вы получите представление о сравнении двух объектов 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;
}