timeIntervalSinceDate problem

Matt Facer picture Matt Facer · Dec 19, 2009 · Viewed 14.7k times · Source

last resort this as I cannot for the life of me work it out!

I am setting a date when my app is closed (using applicationWillTerminate) in user defaults

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSDate *timeClosed = [[NSDate alloc] init];
[defaults setObject: timeClosed forKey:@"svdTimeClosedApp"];

then when the app is launched, I want to compare this time using

NSDate *timeSaved = svdTimeClosedApp;
NSDate *timeNow = [[NSDate alloc] init];
double timeInterval = [timeSaved timeIntervalSinceDate:timeNow];
NSLog(@"time now = %@, time saved = %@, time diff = %@", timeNow, timeSaved, [NSString stringWithFormat:@"%d",timeInterval]);

I tried to output this to the log window expecting to see a nicely formatted string of around 20 seconds. Trouble is, it's coming out as 2047868928!

Any ideas?!

(output of the log window below)

time now = 2009-12-19 20:54:02 +0000, time saved = 2009-12-19 20:48:29 +0000, time diff = 2047868928

Thanks for any help!

Answer

Elfred picture Elfred · Dec 19, 2009

there are a couple of issues. First, in your stringWithFormat: you want to use %g, not %d, %d is for integer values. Also, you should do [timeNow timeIntervalSinceDate:timeSaved] your current call will give you a negative value.