【问题标题】:Convert NSTimeInterval to NSString in 00:00:00 clock format以 00:00:00 时钟格式将 NSTimeInterval 转换为 NSString
【发布时间】:2012-06-08 01:20:31
【问题描述】:

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

【问题讨论】:

    标签: objective-c cocoa time nsstring nstimeinterval


    【解决方案1】:

    这是@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 混淆,它只是使用直接整数数学。

    【讨论】:

    • 如果你要限定#defined 值,你不妨使用常量变量。我可以向你保证,任何现代编译器都会优化它们。
    • @zneak 是的,但这是我不久前做的另一个项目的复制面食。
    猜你喜欢
    • 1970-01-01
    • 2021-03-25
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    相关资源
    最近更新 更多