计算2个日期间隔时间
计算2个时间的间隔多久不需要自行写程式计算,只要使用 NSDateComponents
这个物件,再配合几个物件:
- NSCalendar
- NSDateFormatter
- NSDate
范例中是要计算从1979-12-03起至2013-03-29间隔时间共是多久,所以我们需要有2个时间点,开始的时间点使用NSDate并指定日期表示,再建立结束的时间点,有2个时间点之后,我们要使用NSCalendar
设定为NSGregorianCalendar
历别。全部都准备到位之后,再由NSDateComponents
计算2个时间的间隔:
//-----------start----------- NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init]; [dateFormatter1 setDateFormat:@"YYYY-MM-dd"]; NSDate *startingDate = [dateFormatter1 dateFromString:@"1979-12-03"]; NSDate *endingDate = [[NSDate alloc] init ]; // NSCalendar* calendar = [ [ NSCalendar alloc ] initWithCalendarIdentifier:NSGregorianCalendar ]; /* CalendarIdentifier总共有下面几种: NSGregorianCalendar 阳(国)历 NSBuddhistCalendar 佛历 NSChineseCalendar 农历 NSHebrewCalendar 希伯来日历 NSIslamicCalendar 伊斯兰日历 NSIslamicCivilCalendar 伊斯兰民事日历 NSJapaneseCalendar 日本日历 */ NSUInteger unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit; //计算2个日期时间间隔 NSDateComponents *dateComponents = [calendar components:unitFlags fromDate:startingDate toDate:endingDate options:0]; // NSInteger days = [dateComponents day]; NSInteger months = [dateComponents month]; NSInteger years = [dateComponents year]; NSInteger hours = [dateComponents hour]; NSInteger minutes = [dateComponents minute]; NSInteger seconds = [dateComponents second]; NSLog(@"%d Years %d Months %d Days %d Hours %d Minutes %d Seconds", years,months,days,hours,minutes,seconds); //------------end------------
范例将会计算距离的时间,并以年、月、日、时、分、秒格式来表示。 输出结果:
2013-03-29 13:08:55.363 testa1[49186:c07] 34 Years 3 Months 26 Days 13 Hours 8 Minutes 55 Seconds