找出两次之间的差异

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,我认为您的日期和字符串正在发布。我将编辑我的答案以向您展示代码。

以上是关于找出两次之间的差异的主要内容,如果未能解决你的问题,请参考以下文章

SQL,在计算两次之间的差异时插入表

我如何使用 mysql 选择查询在“x 小时 y 分钟 z 秒”之类的词中获得 2 次之间的差异

两次之间的时间差(分钟)

两次之间的 Bash while 循环

在 SQL 中搜索两次之间的变量

在PHP中获取两次之间的时间差[重复]