Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 计算可可豆的时差_Cocoa_Time_Nsdate_Nstimeinterval - Fatal编程技术网

Cocoa 计算可可豆的时差

Cocoa 计算可可豆的时差,cocoa,time,nsdate,nstimeinterval,Cocoa,Time,Nsdate,Nstimeinterval,我有两个时间值,格式为:%H%M%S(例如161500) 这些值是基于文本的整数 Cocoa中是否有一个简单的函数,可以使用60秒和60分钟的刻度计算这两个整数之间的差 所以如果 用于操作日期的类是NSDate。获取时间间隔的方法是-timeintervalncedate:。结果是一个NSTimeInterval值,它是一个double值,表示以秒为单位的间隔 如果日期的格式为2001-03-24 10:45:32+0600,则可以使用+dateWithString:从NSString创建一个N

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

这些值是基于文本的整数

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

所以如果


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


如果日期的格式为2001-03-24 10:45:32+0600,则可以使用
+dateWithString:
NSString
创建一个
NSDate
对象。

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

尝试此代码

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

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

}

如果不是,您可以使用必要的格式字符串实例化NSDateFormatter。
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
- (NSTimeInterval)intervalBetweenDate:(NSDate *)dt1 andDate:(NSDate *)dt2 {

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