iPhone - 比较两次

时间:2009-11-29 02:35:18

标签: iphone

我有两个我需要比较的HH:mm格式的时间值,并返回它们相差多少分钟。例如,比较18:30和19:45应该返回1:15。我已经阅读了NSDate,NSCalendar等等,但我对它们如何一起工作以及如何只用一段时间而不是整个日期来创建NSDate感到困惑。

1 个答案:

答案 0 :(得分:3)

您可以使用NSDateFormatter在“HH:mm”格式的字符串中创建NSDate对象,然后使用 - [NSDate timeIntervalSinceDate:]查找两次之间的秒数。 NSDate封装了一个完整的日期 - 你不能让它只代表 一次 - 因此创建的NSDate对象将是特定日期的时间(参考日期,1970年1月1日,来自我的测试)在当地时区。您需要自己决定是否需要更强大的解决方案来满足您的需求,因为您的需求不明确。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm"];
NSDate *time1 = [formatter dateFromString:@"18:30"];
NSDate *time2 = [formatter dateFromString:@"19:45"];
[formatter release];

NSTimeInterval deltaTime = fabs([time1 timeIntervalSinceDate:time2]);
NSString *result = [NSString stringWithFormat:@"%d:%d", (int)(deltaTime/3600), (int)(deltaTime/60)%60];

fabs()timeIntervalSinceDate:包裹在那里,根据接收者的排序和timeIntervalSinceDate:的参数,你不会得到负时间。如果需要,您可以调整它。

注意:以上可能不是确定结果的最佳或最有效的方法,但我的目的只是为了说明这个概念,而不是不必要的优化。