我正在尝试使用NSTimeInterval来计算iOS应用程序中两个时间戳之间的差异。但是,当我尝试传递我的时间戳时,我收到以下错误:
错误的接收器类型'double'
这是我的代码:
// Get the current date/time in timestamp format.
NSString *timestamp = [NSString stringWithFormat:@"%f", [[NSDate new] timeIntervalSince1970]];
double current = [timestamp doubleValue];
// Find difference between current timestamp and
// the timestamp returned in the JSON file.
NSTimeInterval difference = [current timeIntervalSinceDate:1296748524];
我认为NSTimeInterval只是double的另一个意思..是不是?
请注意,此处仅使用'1296748524'作为测试。
我不明白我做错了什么。
谢谢你的时间:)
答案 0 :(得分:10)
我认识到时间戳!如果您要将时间戳作为字符串,然后将其转换回双精度数,则可以将其作为双精度数。
修正:
NSString *timestamp = [NSString stringWithFormat:@"%f", [[NSDate new] timeIntervalSince1970]];
double current = [timestamp doubleValue];
NSTimeInterval difference = [[NSDate dateWithTimeIntervalSince1970:current] timeIntervalSinceDate:[NSDate dateWithTimeIntervalSince1970:1296748524]];
NSLog(@"difference: %f", difference);
更好:
double currentt = [[NSDate new] timeIntervalSince1970];
NSTimeInterval differ= [[NSDate dateWithTimeIntervalSince1970:currentt] timeIntervalSinceDate:[NSDate dateWithTimeIntervalSince1970:1296748524]];
NSLog(@"differ: %f", differ);
但你真正在做的是将日期转换为时间戳到字符串到时间戳到日期到时间戳,所以为什么不从头开始使用它并使用:
最佳:
double timeStampFromJSON = 1296748524; // or whatever from your JSON
double dif = [[NSDate date] timeIntervalSince1970] - timeStampFromJSON;
NSLog(@"dif: %f", dif);
所有结果都是一样的。
答案 1 :(得分:2)
timeIntervalSinceDate:
预计会收到NSDate
。此外,它是NSDate
的实例方法。是的,返回值本质上是double
,但它是使用NSDate
个对象的函数。
以下是适当用法的示例:
NSDate *date1 = [NSDate ... // some way to get a valid NSDate
NSDate *date2 = [NSDate ... // some way to get a valid NSDate
NSTimeInterval elapsed = [date1 timeIntervalSinceDate:date2];
在上面的示例中,“elapsed”将包含“date1”和“date2”之间经过的秒数。如果“date1”在“date2”之前,则该值为负。