在学习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秒” }
作者:小李刀刀
原文链接:dateDiff在Objective-C中的实现
裁纸刀下版权所有,允许非商业用途转载,转载时请原样转载并标明来源、作者,保留原文链接。