找出两次之间的差异
Posted
技术标签:
【中文标题】找出两次之间的差异【英文标题】:To find the difference between two times 【发布时间】:2012-03-17 04:48:41 【问题描述】:我想得到两次之间的差。
- (void)viewWillAppear:(BOOL)animated
[super viewWillAppear:animated];
[self setCurrentQuestion];
-(void)setCurrentQuestion
dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
startTime = [dateFormatter stringFromDate:[NSDate date]];
date1 = [dateFormatter dateFromString:startTime];
[self answerTapped];
-(void)answerTapped
endtime = [dateFormatter stringFromDate:[NSDate date]];
date2 = [dateFormatter dateFromString:endtime];
[dateFormatter release];
dateFormatter = nil;
NSTimeInterval * timeDifference =[date2 timeIntervalSinceDate:date1];
我正在使用此代码来获取开始时间和结束时间之间的差异,但我收到的错误是“ Inintializing 'NSTimeInterval *' (aka 'double ') with an expression of in compatible type 'NSTimeInterval' (又名'double')“在“NSTimeInterval * timeDifference =[date2 timeIntervalSinceDate:date1];”行。这个错误是什么意思?如何解决这个问题?或者请告诉我如何获得时差?请帮忙。
【问题讨论】:
【参考方案1】:是星号。您将 timeDifference 声明为指向 NSTimeInterval 的指针。正如您正确指出的那样,这只是双倍。只需更改为:
NSTimeInterval timeDifference =[date2 timeIntervalSinceDate:date1];
另外,我认为您的日期和字符串发布得太早了。最简单的做法是为您的日期声明属性。对于前 ARC:
@property (retain, nonatomic) NSDate * date1;
@property (retain, nonatomic) NSDate * date2;
或者对于 ARC:
@property (strong, nonatomic) NSDate * date1;
@property (strong, nonatomic) NSDate * date2;
然后像这样使用点运算符进行赋值:
self.date1 = [NSDate date];
你根本不需要这些字符串。
【讨论】:
谢谢丹。我明白了你的意思,但是当我的程序收到“EXC_BAD_ACCESS”时,我没有得到时差。你能告诉我为什么会这样吗? 我认为您根本不需要这些字符串。当你想记录开始时间时,设置date1=[NSDate date];,当你想标记结束时,对date2做同样的事情。您的 timeDifference 线看起来不错。我对您的崩溃的猜测是 date1 的过早发布。我可以看到日期和字符串的声明吗? 是的,当然。在这里,NSString * currenttime; NSString * 结束时间; NSDate *date1; NSDate *date2; NSDateFormatter *dateFormatter; @hgpl,我认为您的日期和字符串正在发布。我将编辑我的答案以向您展示代码。以上是关于找出两次之间的差异的主要内容,如果未能解决你的问题,请参考以下文章