计算Cocoa的时差

时间:2009-03-17 14:06:25

标签: cocoa time nsdate nstimeinterval

我有两种格式的时间价值:%H%M%S(E.G.161500)

这些值是基于文本的整数。

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

所以,如果

time 1 = 161500
time 2 = 171500

timedifference = 003000

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:10)

操纵日期的类是NSDate。获取时间间隔的方法是-timeIntervalSinceDate:。结果是NSTimeInterval值,它是double,表示以秒为单位的间隔。

如果您的日期格式为 2001-03-24 10:45:32 +0600,则可以NSDateNSString创建+dateWithString:个对象/ em>的

答案 2 :(得分:4)

试试这段代码。

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

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

}

答案 3 :(得分:1)

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