Xcode 天、时、分、秒的时差

Xcode time difference in days, hours, minutes and seconds

首先:我想对阅读本文的各位说一声新年快乐!! 2015 年 5 月对我们所有人来说都是伟大的一年:-)。

我正忙于制作一个函数来计算两个日期之间的时差。更准确地说:给定时间和日期与当前时间和日期之间的时间。 所以用户 selects 过去的日期,然后程序在计时器中显示给定日期和今天日期之间的时差,如下所示:"hh:mm:ss"

当我 select 今天的时间 (01-01-2015 10:00:00) 时,它工作正常并且每秒更新一次,但是当 selecting 一个日期和时间过去 (31-12-2014 17:00:00) 并将其与时间早于昨天 (01-01-2015 14:01:01) 的今天日期进行比较,它给了我一个负时间,就像一种倒数计时器:-2:-59:-59.

但我希望它显示相反的结果:21:01:01,如果可能的话,如果它超过 24:00:00,请指望。例如 25:12:39.

这是计算差值的代码:

    NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"dd-MM-YYYY HH:mm:ss"];
NSDate *date1 = [df dateFromString:[NSString stringWithFormat:@"30-12-2014 %@", startedTime]];
NSDate *date2 = [df dateFromString:[NSString stringWithFormat:@"31-12-2014 %@", [self getCurrentTime]]];
NSTimeInterval interval = [date2 timeIntervalSinceDate:date1];

int hours = (int)interval / 3600;             // integer division to get the hours part
int minutes = (interval - (hours*3600)) / 60; // interval minus hours part (in seconds) divided by 60 yields minutes
int seconds = (interval - (hours*3600) - (minutes*60)); // interval minus hours part (in seconds) divided by 60 yields minutes

NSString *timeDiff = [NSString stringWithFormat:@"%02d:%02d:%02d", hours, minutes, seconds];
_workingTime.text = [NSString stringWithFormat:@"%@",timeDiff];

有人可以帮忙吗?

[df setDateFormat:@"dd-MM-yyyy hh:mm:ss"];

格式字符串更改后尝试!

而这个..终于.

NSTimeInterval interval = [date2 timeIntervalSinceDate:date1];
if( interval  < 0 ) {
  interval = [date1 timeIntervalSinceDate:date2];
}

More about date formats here