【问题标题】: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];”行。这个错误是什么意思?如何解决这个问题?或者请告诉我如何获得时差?请帮忙。

【问题讨论】:

    标签: iphone nsdate nstimeinterval


    【解决方案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,我认为您的日期和字符串正在发布。我将编辑我的答案以向您展示代码。
    猜你喜欢
    • 1970-01-01
    • 2021-12-05
    • 2019-04-14
    • 2015-02-22
    • 1970-01-01
    • 2013-01-07
    • 2016-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多