13

我有两个格式的时间值:%H%M%S (EG161500)

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

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

因此,如果

time 1 = 161500
time 2 = 171500

timedifference = 003000
4

4 回答 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
于 2009-03-17T22:35:31.140 回答
10

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

您可以从with创建一个NSDate对象,前提是您的日期格式为2001-03-24 10:45:32 +0600NSString+dateWithString:

于 2009-03-17T14:12:52.790 回答
4

试试这个代码。

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

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

}

于 2012-05-23T12:56:57.797 回答
1

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

于 2009-03-17T15:02:30.893 回答