Difference between two NSDate objects -- Result also a NSDate
NSDate
represents an instance in time, so it doesn't make sense to represent an interval of time as an NSDate
. What you want is NSDateComponents
:
NSDate *dateA;NSDate *dateB;NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:dateA toDate:dateB options:0];NSLog(@"Difference in date components: %i/%i/%i", components.day, components.month, components.year);
If you subtract 12/12/2001 from 05/05/2002 what will be the date? The chronological distance between two dates can't be a date, it's alway some kind of interval. You can use timeIntervalSinceDate: to calculate the interval.
To localize you can try the following steps:
You can use the NSCalendar with dateFromComponents: passing in a NSDateComponents.
To break down a timeInterval into NSDateComponents look at How do I break down an NSTimeInterval into year, months, days, hours, minutes and seconds on iPhone?.
Finally use the NSDateFormatter and initWithDateFormat:allowNaturalLanguage: to get your localized string. The Date Format String Syntax shows the different placeholders.
From NSDate
class reference, you have instance methods to do these -
- How to compare two NSDate variables? Ans:
isEqualToDate:
- How to find difference between two NSDate variables? Ans:
timeIntervalSinceDate:
- How to get each separate value of minute, hours and days from NSDate variable? links