【问题标题】:How to clear NSDate milliseconds如何清除 NSDate 毫秒
【发布时间】:2010-08-29 20:26:20
【问题描述】:

我想将日期/时间保存在没有秒或毫秒的 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,我需要这样做。有任何想法吗?谢谢。

【问题讨论】:

    标签: objective-c cocoa nsdate nscalendar


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-14
      • 1970-01-01
      • 2015-07-07
      • 2017-01-04
      • 2013-03-27
      • 2012-03-08
      • 2013-09-25
      相关资源
      最近更新 更多