代码之家  ›  专栏  ›  技术社区  ›  ed94133

如何清除NSDate毫秒

  •  3
  • ed94133  · 技术社区  · 14 年前

    我想在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 回复  |  直到 12 年前
        1
  •  8
  •   dreamlax    14 年前

    timeIntervalSince1970 返回自1970年1月1日以来的秒数(以双精度表示)。你可以用这段时间来截断任何你喜欢的秒数。要四舍五入到最接近的一分钟,您可以执行以下操作:

    NSTimeInterval timeSince1970 = [[NSDate date] timeIntervalSince1970];
    
    timeSince1970 -= fmod(timeSince1970, 60); // subtract away any extra seconds
    
    NSDate *nowMinus = [NSDate dateWithTimeIntervalSince1970:timeSince1970];
    

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