dateDiff在Objective-C中的實現
阿新 • • 發佈:2022-05-03
在學習iOS App開發中遇到需要計算時間差並格式化輸出的需求,沒有現成的方法,需要結合NSCalendar和NSDateComponents來實現。所以乾脆把程式碼封裝成一個熟悉的dateDiff方法。不過這個方法跟VB和sql裡的dateDiff還是有點不一樣,雖然可以封裝成完全一樣,不過我覺得直接返回NSDateComponents會更方便,因為所需要的各種單位上的值都包含在其中了。 我是把程式碼封裝到自己的一個工具類KRUtils裡作為類方法,使用起來也很方便。程式碼如下:
/* dateDiff 方法實現 */ +(NSDateComponents *) dateDiff:(NSDate *) fromDate toDate:(NSDate *) toDate { NSCalendar *sysCalendar = [NSCalendar currentCalendar]; unsigned int unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; NSDateComponents *compInfo = [sysCalendar components:unitFlags fromDate:fromDate toDate:toDate options:0]; return compInfo; }
/* dateDiff 呼叫示例 */ -(void) demo { NSDate *date1 = [[NSDate alloc] init]; NSDate *date2 = [[NSDate alloc] initWithTimeIntervalSinceNow:86400]; NSDateComponents *diffInfo =[KRUtils dateDiff:date1 toDate:date2]; NSLog(@"相差 %d天%02d小時%02d分鐘%02d秒", [diffInfo day], [diffInfo hour], [diffInfo minute], [diffInfo second]); //輸出結果:“相差 1天00小時00分鐘00秒” }