2010-08-29 59 views
3

我想保留在没有秒或毫秒的CoreData存储日期/时间。 (我在做一些处理圆时间了,和流浪秒/毫秒变成猴子扳手),这是很容易砸秒:如何清除NSDate毫秒

NSDate *now = [NSDate date]; 
NSDateComponents *time = [[NSCalendar currentCalendar] 
          components:NSHourCalendarUnit | NSMinuteCalendarUnit 
          | NSSecondCalendarUnit fromDate:now]; 
    NSDate *nowMinus = [now addTimeInterval:-time.second]; 
    // e.g. 29 Aug 10 4:43:05 -> 29 Aug 10 4:43:00 

这个伟大的工程,以零出秒,但我可以找不到一个NSMillisecondCalendarUnit,我可以使用它来清零毫秒,而且我需要。有任何想法吗?谢谢。

回答

7

timeIntervalSince1970返回自1970年1月1日以来的秒数(双倍)。您可以使用此时间截断您喜欢的秒数。要四舍五入为最接近的分钟,你可以这样做:

NSTimeInterval timeSince1970 = [[NSDate date] timeIntervalSince1970]; 

timeSince1970 -= fmod(timeSince1970, 60); // subtract away any extra seconds 

NSDate *nowMinus = [NSDate dateWithTimeIntervalSince1970:timeSince1970]; 

浮点数据类型往往不太准确,但上述可能不够精确满足您的需求。

+0

太棒了!谢谢!这工作完美。 – ed94133 2010-08-29 22:26:18