计算2个日期间隔时间

计算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