找出iOS目标c的两个时间值之间的差异

时间:2017-06-29 11:15:02

标签: ios objective-c time

我试图减去两个不同的时间值

**目标: - **我想减去这个值得到两次从服务器获得的差异

下面是我的方法

        self.start=[jsonDict valueForKey:@"start_time"];
        self.end=[jsonDict valueForKey:@"end_time"];
        self.datefj=[jsonDict valueForKey:@"date"];
        NSLog(@"%@",self.start);
        NSLog(@"%@",self.end);
        NSLog(@"%@",self.datefj);
        self.date1fj=[NSString stringWithFormat:@"%@ %@",self.datefj,self.start];
        self.date2fj=[NSString stringWithFormat:@"%@ %@",self.datefj,self.end];
        //NSTimeInterval secondsBetween = [_end timeIntervalSinceDate:_start];
        //NSArray *hoursMins = [_end componentsSeparatedByString:@":"];
        //NSInteger timeInMins = [hoursMins[0] intValue] * 60 + [hoursMins[1] intValue];
        NSDateFormatter *df=[[NSDateFormatter alloc] init];
        // Set the date format according to your needs
        [df setDateFormat:@"dd/MM/YYYY hh:mm"]; //for 12 hour format
        //[df setDateFormat:@"MM/dd/YYYY HH:mm "]  // for 24 hour format

        NSDate *date1 = [df dateFromString:_date1fj];
        NSDate *date2 = [df dateFromString:_date2fj];
        NSLog(@"%@",date1);
        NSLog(@"%@",date2);
        NSLog(@"%f is the time difference",[date2 timeIntervalSinceDate:date1]);

    }

这是我从服务器获得的数据,我想要开始时间和结束时间之间的差异

2017-06-29 16:37:50.543 Barebones[4204:233648] requestReply cust category: {
date = "29-6-2017";
"end_time" = "17:45";
"market_crash" = true;
"start_time" = "14:28";
}

下面是我的nslog详细信息

2017-06-29 16:37:50.543 Barebones[4204:233648] true
2017-06-29 16:37:53.482 Barebones[4204:233648] 14:28
2017-06-29 16:37:53.483 Barebones[4204:233648] 17:45
2017-06-29 16:37:53.483 Barebones[4204:233648] 29-6-2017
2017-06-29 16:37:58.493 Barebones[4204:233648] (null)
2017-06-29 16:37:58.494 Barebones[4204:233648] (null)
2017-06-29 16:45:47.514 Barebones[4204:233648] 0.000000 is the time difference

提前感谢!! :)

2 个答案:

答案 0 :(得分:3)

尝试以下代码

[date1 timeIntervalSinceReferenceDate] - [date2 timeIntervalSinceReferenceDate];

这将有效:)

答案 1 :(得分:1)

问题出在您的日期格式化程序中。我尝试了这样的代码,它对我来说很好。

NSString * start = @"14:28";
NSString * end = @"17:45";
NSString * datefj = @"29-6-2017";

NSString *date1fj =[NSString stringWithFormat:@"%@ %@",datefj,start];
 NSString *date2fj =[NSString stringWithFormat:@"%@ %@",datefj,end];

NSDateFormatter *df=[[NSDateFormatter alloc] init];
// Set the date format according to your needs
//[df setDateFormat:@"dd-mm-yyyy hh:mm"]; //for 12 hour format
[df setDateFormat:@"dd-MM-YYYY HH:mm "];  // for 24 hour format

NSDate *date1 = [df dateFromString:date1fj];
NSDate *date2 = [df dateFromString:date2fj];
NSLog(@"%@",date1);
NSLog(@"%@",date2);
NSLog(@"%f is the time difference",[date2 timeIntervalSinceDate:date1]/60);

//编辑以获得正确格式的时间

NSString *formattedTime = [self timeFormatted:[date2 timeIntervalSinceDate:date1]/60];

//创建一个新功能

- (NSString *)timeFormatted:(int)totalSeconds
{

    int seconds = totalSeconds % 60;
    int minutes = (totalSeconds / 60) % 60;
    int hours = totalSeconds / 3600;

    return [NSString stringWithFormat:@"%02d:%02d:%02d",hours, minutes, seconds];
}