2015-11-06 49 views
2

我正在計算兩個日期之間的差異。我已經創建我自己的解決方案:Obj-C解析秒爲dd:hh:mm:ss

NSDate *actualDate = [NSDate date]; 
NSTimeInterval sec = [eveDate timeIntervalSinceDate:actualDate]; 
int secondsBetween = sec; 
int minBetween  = sec/60; 
int hoursBetween = sec/3600; 
int daysBetween = sec/86400; 

_lblDays.text = [NSString stringWithFormat:@"%d", daysBetween]; 
_lblHours.text = [NSString stringWithFormat:@"%d", hoursBetween % 24]; 
_lblMin.text = [NSString stringWithFormat:@"%d", minBetween % hoursBetween]; 
_lblSec.text = [NSString stringWithFormat:@"%d", secondsBetween % minBetween]; 

但我相信有這個更好的解決方案(例如像原生類),但我無法找到任何東西。你能告訴我如何做得更好嗎?

+0

[NSDateComponentsFormatter](https://developer.apple.com/library/prerelease/ios/documentation/Foundation/Reference/ NSDateComponentsFormatter_class/index.html) – Desdenova

回答

8

這是另一種計算方法。

NSDateComponents *components = [[NSCalendar currentCalendar] components: NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond 
               fromDate: startDate toDate: endDate options: 0]; 
NSInteger days = [components day]; 
NSInteger hour=[components hour]; 
NSInteger minutes=[components minute]; 
NSInteger sec = [components second]; 
+0

特別是這是做到這一點的正確方法,因爲它遵守時間轉換。 –

0

您可以使用NSCalendarNSDateComponents類這樣做:

NSCalendar *calendar   = [NSCalendar currentCalendar]; 
NSDateComponents *components = [calendar components:NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond fromDate:actualDate toDate:eveDate options:0]; 
NSLog(@"Days->%d Hour->%d, Minute->%d, Second->%d", components.day, components.hour, components.minute, components.second);