2014-03-06 3 views
1

Я получаю nan в timeiterval. Я рассчитываю интервал времени от даты сервера и текущей даты. Работала нормально. Но я получил нан вместо временного интервала. В каком-то объекте я получаю nan, а в каком-то объекте он возвращает правый интервал.NAN in timeinterval

NSDate *date = [NSDate date]; 
NSLog(@"today %@",date); 
NSDateFormatter *df = [[NSDateFormatter alloc]init]; 
[df setDateFormat:@"yyyy-MM-dd hh:mm:ss"]; 
NSString *dt = [df stringFromDate:date]; 
NSLog(@"dt %@",dt); 

NSDate *convertedDate = [df dateFromString:dt]; 
NSLog(@"cnvrt %@",convertedDate); 

NSString *date1 = [ObjectDict valueForKey:@"time"]; 
NSLog(@"%@",date1); 
NSTimeInterval commnetInterval = [convertedDate timeIntervalSinceDate:[df dateFromString:date1]]; 
NSLog(@"%f timeinterval",commnetInterval); 


float minutes = commnetInterval/60.0; 
float hours = minutes/60.00; 
float days = minutes/1440.0; 

NSLog(@"days %f\n hours %f\n min %f",days,hours,minutes); 

Вот мой журнал:

cnvrt 2014-03-06 03:46:42 +0000//current date 
2014-03-06 09:16:42.417 BeachImageApplication[2848:a0b] 2014-03-04 16:08:23// date from server 
2014-03-06 09:16:42.418 BeachImageApplication[2848:a0b] nan timeinterval 
2014-03-06 09:16:42.418 BeachImageApplication[2848:a0b] days nan 
hours nan 
min nan 
+0

Вы уверены, что '[df dateFromString: date1]' возвращает действительный 'NSDate'? Какова его ценность? – bneely

+2

Почему вы конвертируете [NSDate date] в String dt, а затем преобразуете String dt в NSDate convertDate? –

ответ

0

Ваша проблема имеет два аспекта.

  1. Формат вашей даты должен быть yyyy-MM-dd HH:mm:ss, а не yyyy-MM-dd hh:mm:ss.
  2. Использование неправильного формата вызывает [df dateFromString:date1] для возврата nil. И минуя nil до timeIntervalSinceDate: Результаты: commnetInterval есть Nan.

Как только вы исправите формат даты, код будет работать.

0

Форматирование даты с неправильной датой Формат. Он должен быть

NSDateFormatter *df = [[NSDateFormatter alloc]init]; 
[df setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
-1
NSDate *lastModified = nil; 
NSDate *nowDate = [NSDate date]; 
NSTimeInterval timeSinceCreate = [nowDate timeIntervalSinceDate:lastModified]; 

timeSinceCreate Всегда будет NaN, попробуйте проверить значение nowDate.

 Смежные вопросы

  • Нет связанных вопросов^_^