【发布时间】:2012-09-02 19:22:50
【问题描述】:
我正在使用 NSDateFormatter 来格式化持续时间 (see here)。
我想使用如下格式:“3 小时 15 分钟”。
这是我正在使用的格式字符串:@"H' hours, 'm' minutes'"。
问题在于,对于短于一小时的持续时间,结果类似于“0 小时 35 分钟”。
在这种情况下,我只想显示“35 分钟”。
有没有办法告诉 NSDateFormatter 在没有小时数的情况下根本不显示小时数,还是我应该只使用 if 语句并手动构造字符串?
编辑:
我很清楚,这很容易通过几行额外的代码手动完成,这就是我过去的做法。我只是想知道格式化程序是否有足够的智能来自行处理这个问题,因为这似乎是一个常见问题。
【问题讨论】:
-
请记住,如果时间间隔超过 24 小时,NSDateFormatter 版本将产生废话。
-
您是否还希望输出不包含“0 分钟”?例如,输出“1 小时”而不是“1 小时 0 分钟”?
-
This approach 比使用 NSDateFormatter 更好、更简单、更高效。而且,事实上,如果需要,可以使用简单的 C 条件轻松地将“0 小时”的省略添加到该解决方案中。
-
@CameronSpickert 我可以接受“0 分钟”,因为它清楚地表明时间不仅仅是四舍五入到最接近的小时(就像科学测量中的尾随零)。
-
Nathan,请注意,如果您只向下滚动一点,该解决方案就在您引用的线程中。 “接受”的解决方案并不总是最好的。
标签: objective-c ios time nsdate nsdateformatter