我有两种格式的时间价值:%H%M%S(E.G.161500)
这些值是基于文本的整数。
Cocoa中是否有一个简单的函数可以使用60秒和分钟刻度计算这两个整数之间的差异?
所以,如果
time 1 = 161500
time 2 = 171500
timedifference = 003000
答案 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,则可以NSDate
与NSString
创建+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有方法为您执行此操作)。