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