我想在没有几秒钟或毫秒的情况下将日期/时间保留在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,我需要。有任何想法吗?谢谢。

有帮助吗?

解决方案

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

NSTimeInterval timeSince1970 = [[NSDate date] timeIntervalSince1970];

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

NSDate *nowMinus = [NSDate dateWithTimeIntervalSince1970:timeSince1970];

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top