如何在iPhone中获取两天之间的差异
如果您的日期位于NSDate对象中,则可以使用timeIntervalSinceDate方法将差异查找为NSTimeInterval,它将以秒为单位给出差异。
然后,您可以通过一个简单的算法转换秒到天,小时和分钟(这是我的头顶部,未测试):
minutes = seconds/60;
seconds %= 60;
hours = minutes/60;
minutes %= 60;
days = hours/24;
hours %= 24;
NSCalendar* gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
unsigned int uintFlags = NSYearCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit | NSWeekCalendarUnit | NSWeekdayCalendarUnit | NSHourCalendarUnit;
NSDateComponents* differenceComponents = [gregorian components:uintFlags fromDate:firstDate toDate:secondDate options:0];
然后就检查differenceComponents的性能。您可以在随XCode提供的文档中找到所有这些属性
+1“提供了Xcode的文档” - 它也可在苹果的开发网站:http://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/Classes/ NSCalendar_Class/Reference/NSCalendar.html#// apple_ref/doc/uid/TP40001451-BBCEGJCC – Tim 2009-12-16 11:39:20
我已经写了一个全面的方案,以给差在C中的两个日期之间(不知道这是你的目标C的意思)。请在这里找到原作。
http://tech.bragboy.com/2010/02/different-between-two-days-implemented.html
建立关费鲁乔的回答,这样的事情将让你寻找到这个时间差为一个连接字符串,你可以告诉你有多少天,小时和分钟之日起比较(YOURNSDATE)至今
NSTimeInterval timeDifference = [[NSDate date] timeIntervalSinceDate:YOURNSDATE];
NSInteger seconds = (NSInteger)timeDifference;
NSInteger minutes;
NSInteger hours;
NSInteger days;
minutes = seconds/60;
seconds %= 60;
hours = minutes/60;
minutes %= 60;
days = hours/24;
hours %= 24;
NSString* daysString = [NSString stringWithFormat:@"%i days ", days];
if(days == 0){
daysString = @"";
}else if(days == 1){
daysString = [NSString stringWithFormat:@"%i day ", days];
}
NSString* hoursString = [NSString stringWithFormat:@"%i hrs ", hours];
if(hours == 0){
hoursString = @"";
}else if(hours == 1){
hoursString = [NSString stringWithFormat:@"%i hr ", hours];
}
NSString* minutesString = [NSString stringWithFormat:@"%i min", minutes];
if(minutes == 0){
minutesString = @"";
}
NSString *AllDatesString = [NSString stringWithFormat:@"%@%@%@", daysString, hoursString, minutesString];
Thanks Ferruccio this是我正在寻找的确切的东西 – sandy 2009-12-16 15:10:39