日期ios中的时间差(分钟)

时间:2016-11-23 08:48:56

标签: ios objective-c date

我使用以下方法获得日期时间差,以分钟为单位给出负值。

我正在使用以下代码:

NSCalendar *gregorian = [[NSCalendar alloc]
                         initWithCalendarIdentifier:NSCalendarIdentifierGregorian];

NSUInteger unitFlags = NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitMinute;

NSDateComponents *components = [gregorian components:unitFlags
                                            fromDate:dt2
                                              toDate:dt1 options:0];
NSInteger months = [components month];
NSInteger days = [components day];
NSInteger minutes = [components minute];

NSLog(@"months %ld",(long)months);
NSLog(@"days %ld",(long)days);
NSLog(@"minutes %ld",(long)minutes);

int res = (int)minutes;
NSLog(@"int minutes %d",res);

return res;

我想在几分钟内计算这两个日期之间的差异:

  • date1:​​2016-11-23 07:39:44 +0000
  • date2:2016-11-23 08:13:44 +0000

结果我得到-34

3 个答案:

答案 0 :(得分:1)

您需要替换为:

NSDateComponents *components = [gregorian components:unitFlags
                                            fromDate:dt1
                                              toDate:dt2 options:0];

答案 1 :(得分:0)

fromDate将包含较早的日期,而toDate将包含NSDateComponents中的较晚日期您错误地传递了该日期

NSDateComponents *components = [gregorian components:unitFlags
                                            fromDate:dt2
                                              toDate:dt1 options:0];

到这个

NSDateComponents *components = [gregorian components:unitFlags
                                            fromDate:dt1
                                              toDate:dt2 options:0];

答案 2 :(得分:0)

如果您不知道哪个日期是前者,只需返回差异的绝对值。这总能给你带来正面的价值。

-(void)webViewDidFinishLoad:(UIWebView *)webView

{

    if ([webView isEqual:_viewWebDescription])
    {

       CGFloat height= webView.scrollView.contentSize.height;

       CGRect frameWebView=_viewWebDescription.frame;

       if (_viewWebDescription.frame.origin.y + height >= 745)
       {
           height= 745 - _viewWebDescription.frame.origin.y;
       }
       frameWebView.size.height=height;
       _viewWebDescription.frame= frameWebView;
    }

}