以 00:00:00 时钟格式将 NSTimeInterval 转换为 NSString

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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 是的,但这是我不久前做的另一个项目的复制面食。

以上是关于以 00:00:00 时钟格式将 NSTimeInterval 转换为 NSString的主要内容,如果未能解决你的问题,请参考以下文章

SSIS输出日期为DD / MM / YYYY 00:00:00

Linux 时间同步

这种格式是啥意思 T00:00:00.000Z?

如何获得日期 2018-05-23T23:00:00.000+00:00 的这种格式? [复制]

c语言将秒数转换为时间格式(24小时制,00:00:00格式)

格式为 00:00:00 的 iOS 数组字符串到格式为 00.00.00 的数组浮点型 Objective C