2

手头的任务非常简单——将 NSTimeInterval 转换为 NSString,看起来像 12:34:56(12 小时 34 分 56 秒)。

4

1 回答 1

10

这是@golegka 答案的更快版本:

NSString *stringFromInterval(NSTimeInterval timeInterval)
{
#define SECONDS_PER_MINUTE (60)
#define MINUTES_PER_HOUR (60)
#define SECONDS_PER_HOUR (SECONDS_PER_MINUTE * MINUTES_PER_HOUR)
#define HOURS_PER_DAY (24)

    // convert the time to an integer, as we don't need double precision, and we do need to use the modulous operator
    int ti = round(timeInterval);

    return [NSString stringWithFormat:@"%.2d:%.2d:%.2d", (ti / SECONDS_PER_HOUR) % HOURS_PER_DAY, (ti / SECONDS_PER_MINUTE) % MINUTES_PER_HOUR, ti % SECONDS_PER_MINUTE];

#undef SECONDS_PER_MINUTE 
#undef MINUTES_PER_HOUR
#undef SECONDS_PER_HOUR
#undef HOURS_PER_DAY
}

这不会弄乱NSCalendars,它只是使用直接整数数学。

于 2012-06-08T02:27:05.933 回答