Objective c 什么';在iOS上四舍五入NSDate的正确方法是什么?

Objective c 什么';在iOS上四舍五入NSDate的正确方法是什么?,objective-c,ios,ios5,Objective C,Ios,Ios5,我需要获取当前日期,但忽略分钟和秒,然后计算时间间隔 比如说现在是早上7:30,我需要看看到第二天下午5点还有多少小时,不算分钟,这意味着在这种情况下,早上7:30应该等于早上7点,结果应该是22小时 这很容易做到 - (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate 假设我能够创建间隔的两端 我想到的唯一选项是使用NSDateFormatter将当前日期输出为不带分钟的字符串,然后将其解析回来。但这似乎不是一个非常优雅和有

我需要获取当前日期,但忽略分钟和秒,然后计算时间间隔

比如说现在是早上7:30,我需要看看到第二天下午5点还有多少小时,不算分钟,这意味着在这种情况下,早上7:30应该等于早上7点,结果应该是22小时

这很容易做到

- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate
假设我能够创建间隔的两端


我想到的唯一选项是使用NSDateFormatter将当前日期输出为不带分钟的字符串,然后将其解析回来。但这似乎不是一个非常优雅和有效的解决方案

我基本上需要做的是将NSDate调整到特定的精度,如天,然后调整其余的(7:50到7:00等)。

或者有什么简单的方法可以更聪明地做到这一点,7:50改为8:00而不是7:00


我需要在iOS 5上执行此操作。

可以使用NSCalendar进行计算,而不是使用NSDateComponents进行解析。
当您从NSDateComponents获取小时和分钟数时,您可以轻松地应用舍入并将组件转换回日期。

“这似乎不是一个非常优雅和高效的解决方案”。这是两行代码,因此可读性很强(在我看来这很优雅)。你会做上千次这个手术吗?在您看到它实际上需要优化之前,为什么还要担心它呢?当然,正如你所说,这只是截断,而不是四舍五入。@Rayfleck-你肯定是在开玩笑吧?“过早优化”和“我们可以编写糟糕的代码”之间有着巨大的区别。达斯是正确的,通过格式化和解析来实现这一点是不雅观和糟糕的设计;缺乏效率只是次要的,但却是显而易见的。编程是艺术和科学的混合体。@CRD-编程艺术的一部分是知道哪里足够好。这就是为什么我问他是否做了数千次。如果是这样的话,那就想方设法寻找一个优雅的解决方案。如果没有,写下两行代码,继续你的生活。可读性和程序员时间与时钟周期时间一样重要。有时没有优雅的解决方案,有人想出了一个吗?我从未说过“过早优化”——尽管我在想;-)