在Cocoa中计算时间差

13

我有两个时间值,格式为:%H%M%S(例如161500)。

这些值是文本整数。

在Cocoa中是否有一个简单的函数可以使用60秒和分钟刻度计算这两个整数之间的差异?

所以如果:

time 1 = 161500
time 2 = 171500

timedifference = 003000
4个回答

33
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"HHmmss"];

NSDate *date1 = [dateFormatter dateFromString:@"161500"];
NSDate *date2 = [dateFormatter dateFromString:@"171500"];

NSTimeInterval diff = [date2 timeIntervalSinceDate:date1]; // diff = 3600.0

10

用于操作日期的类是NSDate。获取时间间隔的方法是-timeIntervalSinceDate:。结果是一个NSTimeInterval值,它是一个代表以秒为单位的间隔的double

你可以使用+dateWithString:NSString转换为NSDate对象,前提是您的日期格式为2001-03-24 10:45:32 +0600


1
如果不是,您可以使用必要的格式字符串实例化NSDateFormatter。 - Peter Hosey

4

试试这段代码。

- (NSTimeInterval)intervalBetweenDate:(NSDate *)dt1 andDate:(NSDate *)dt2 {

NSTimeInterval interval = [dt2 timeIntervalSinceDate:dt1];
NSLog(@"%f",interval);
return interval;

}


1
我会创建一个NSFormatter子类来解析输入数据中以该格式表示的时间值(您可以将其放在文本字段上以自动转换用户输入,或者在代码中从数据源中解析)。让它返回作为NSTimeInterval(表示秒的double)包装在NSNumber中的组合秒数。从那里开始,很容易减去差异,并使用您创建的相同NSFormatter类显示它。在解析和显示值时,您需要编写代码将秒转换为小时:分钟:秒或任何您喜欢的格式。如果对您的应用程序有意义,您还可以像mouviciel提到的那样将这些值转换为NSDate。只需记住,您始终将存储与参考日期的时间差异,通常是1970年1月1日(NSDate具有可为您执行此操作的方法)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接