2016-07-15 12 views
-2

Ich berechne den Zeitunterschied zwischen zwei NSDates und es gibt immer 0,0000 zurück separat geht, wird es korrekt gedruckt und wenn ich den Unterschied zu drucken, druckt er 0,0000 ... hier ist der Code, das Datum zu berechnen ..Zeitintervall zwischen zwei Daten gibt Null

-(NSDate *) toLocalTime 
{ 
NSTimeZone *tz = [NSTimeZone defaultTimeZone]; 
NSInteger seconds = [tz secondsFromGMTForDate: [NSDate date]]; 
return [NSDate dateWithTimeInterval: seconds sinceDate: [NSDate date]]; 
} 

und hier ist der Code, wo ich den Unterschied finden ..

NSLog(@"the time when the location was updated is %@",timeWhenTheLocationWasUpdated); 
NSLog(@"the time when the server was contacted last time was %@",timeWhenLastLocationPosted); 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"dd-MM-yyyy HH:mm:ss ZZZ"]; 
NSDate *timeofUpdatingLocation = [[NSDate alloc] init]; 
NSDate *timeofPostingToTheServer = [[NSDate alloc]init]; 
timeofUpdatingLocation = [dateFormatter dateFromString:timeWhenTheLocationWasUpdated]; 
timeofPostingToTheServer = [dateFormatter dateFromString:timeWhenLastLocationPosted]; 
NSTimeInterval difference = [timeofPostingToTheServer timeIntervalSinceDate:timeofUpdatingLocation]; 
NSLog(@"the difference between posting the location to the server and updating the location is %f",difference); 

Beide NSlogs am Anfang des Codes pr Gibt das Datum in dem Format an, das im Datumsformatierer korrekt angegeben ist.

+0

Aktualisieren Sie Ihre Frage mit der tatsächlichen Protokollausgabe. Sie müssen auch 'timeofUpdatingLocation' und' timeofPostingToTheServer' protokollieren (was ich glaube, sind beide 'nil'). – rmaddy

+0

Und was hat die 'toLocalTime' Methode mit dem Problem zu tun? – rmaddy

+0

Meine Vermutung ist, dass Ihr 'dateFromString' für beide Daten fehlschlägt, wodurch beide Daten identisch sind und somit 0 Zeit zwischen ihnen haben. – Putz1103

Antwort

2

In Objective-C ist es völlig legal, Nachrichten an keine Objekte zu senden. Du bekommst 0/nil/FALSE zurück.

NSdateFormatter Objekte geben NULL von einem Aufruf an dateFromString zurück, wenn die Zeichenfolge nicht mit dem Format übereinstimmt.

Meine Vermutung ist, dass Ihr Anruf zu dateFromString versagt und timeofPostingToTheServer ist gleich Null, so dass Sie immer ein 0

(Und als Fußnote zurück, wie rmaddy in seinem Kommentar schon sagt, ToLocalTime nicht scheint Sinn machen mit dem Problem, das Sie versuchen zu lösen)