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