myles
myles

Reputation: 75

Measuring time Interval Since Now

anyone know or can provide some example code relating to "timeIntervalSinceNow" method...

I need something like... time2(when app eneters foreground) - time1(when app enters background) = time3(the difference in times)... this is so i can use this number(pref in seconds) to calculate the time i have lost while the app has been in background !!

I am having trying trying to create the date objects, receive the object and display/use in a label....

Upvotes: 4

Views: 23404

Answers (3)

bob s
bob s

Reputation: 41

Actually, to answer your original question, myles, you can use timeIntervalSinceNow. In the statement below, inputDate has been initialized as an NSDate and set to some date (you could just try [NSDate *inputDate = [NSDate date]; to set the date at the current date and time.

NSTimeInterval timeToAlert =[inputDate timeIntervalSinceNow];

The next line is a way to put that NSTimeInterval into a string.

NSMutableString *timeinterval = [NSMutableString string];
[timeinterval appendFormat:@"%f",timeToAlert];

Finally, the app delegate class is typically where code can be written to handle coming in and out of background. Good luck!

Upvotes: 4

omz
omz

Reputation: 53551

You can calculate the difference between two dates with the timeIntervalSinceDate: method:

//When app enters background:
self.backgroundDate = [NSDate date]; //this should be a property 
//...
//When the app comes back to the foreground:
NSTimeInterval timeSpentInBackground = [[NSDate date] timeIntervalSinceDate:self.backgroundDate];

NSTimeInterval is simply a typedef for double, it's measured in seconds. [NSDate date] instantiates an NSDate object with the current date and time.

Upvotes: 3

Jonathan Grynspan
Jonathan Grynspan

Reputation: 43472

timeIntervalSinceNow tells you the offset of an NSDate from the current time. You want timeIntervalSinceDate::

NSDate *appEnteredForeground = ...;
NSDate *appEnteredBackground = ...;

NSTimeInterval difference = [appEnteredBackground timeIntervalSinceDate: appEnteredForeground];

Upvotes: 3

Related Questions