How can I calculate the days between 1 Jan 2010 and (for example) 3 Feb 2010?
NSDate *date1 = [NSDate dateWithString:@"2010-01-01 00:00:00 +0000"]; NSDate *date2 = [NSDate dateWithString:@"2010-02-03 00:00:00 +0000"]; NSTimeInterval secondsBetween = [date2 timeIntervalSinceDate:date1]; int numberOfDays = secondsBetween / 86400; NSLog(@"There are %d days in between the two dates.", numberOfDays);
NSDate objects represent exact moments of time, they do not have any associated time-zone information. When you convert a string to a date using e.g. an
NSDateFormatter converts the time from the configured timezone. Therefore, the number of seconds between two
NSDate objects will always be time-zone-agnostic.
Furthermore, this documentation specifies that Cocoa's implementation of time does not account for leap seconds, so if you require such accuracy, you will need to roll your own implementation.