3

秒またはミリ秒なしで 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 が見つかりません。何か案は?ありがとう。

4

1 に答える 1

8

timeIntervalSince1970は、1970 年 1 月 1 日からの秒数を (倍精度で) 返します。この時間を使用して、任意の秒数を切り捨てることができます。最も近い分に切り下げるには、次のようにします。

NSTimeInterval timeSince1970 = [[NSDate date] timeIntervalSince1970];

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

NSDate *nowMinus = [NSDate dateWithTimeIntervalSince1970:timeSince1970];

浮動小数点データ型は本質的に不正確ですが、上記は必要に応じて十分に正確な場合があります。

于 2010-08-29T21:08:17.247 に答える