NAN在时间间隔

时间:2014-03-06 03:57:44

标签: ios nsdate nsdateformatter nstimeinterval

我在计时器上得到了nan。我正在计算服务器日期和当前日期的时间间隔。工作正常。但我得到了南而不是时间间隔。在某些对象中,我得到了nan,在某些对象中,它正在返回正确的间隔。

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

3 个答案:

答案 0 :(得分:0)

你的问题是双重的。

  1. 您的日期格式必须为yyyy-MM-dd HH:mm:ss,而不是yyyy-MM-dd hh:mm:ss
  2. 使用错误的格式会导致[df dateFromString:date1]返回nil。将nil传递给timeIntervalSinceDate:会导致commnetInterval成为Nan
  3. 修复日期格式后,代码即可运行。

答案 1 :(得分:0)

您正在使用错误的日期格式格式化日期。它应该是

NSDateFormatter *df = [[NSDateFormatter alloc]init];
[df setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 

答案 2 :(得分:-1)

NSDate *lastModified = nil;
NSDate *nowDate = [NSDate date];
NSTimeInterval timeSinceCreate = [nowDate timeIntervalSinceDate:lastModified];

timeSinceCreate将始终为NaN,尝试检查nowDate值。