如何清除NSDate毫秒

时间:2010-08-29 20:26:21

标签: objective-c cocoa nsdate nscalendar

我希望在没有秒或毫秒的CoreData存储中保留日期/时间。 (我正在进行一些处理,以便关闭时间,并且流浪的秒/毫秒成为一个猴子扳手。)这很容易放弃秒:

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我可以用来将毫秒归零,我需要。有任何想法吗?感谢。

1 个答案:

答案 0 :(得分:8)

timeIntervalSince1970返回自1970年1月1日以来的秒数(以双精度计)。您可以使用此时间截断您喜欢的任何秒数。要向下舍入到最近的分钟,您可以这样做:

NSTimeInterval timeSince1970 = [[NSDate date] timeIntervalSince1970];

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

NSDate *nowMinus = [NSDate dateWithTimeIntervalSince1970:timeSince1970];

浮点数据类型本质上是不精确的,但上述内容可能足以满足您的需求。