質問

数秒またはミリ秒のないコリダタストアに日付/時間を維持したいと思います。 (私はいくつかの処理を行って時間を丸めていますが、数秒/ミリ秒が猿のレンチになります。)数秒を落とすのは簡単です:

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日以降、秒数(2倍)を返します。この時間を使用して、好きな秒を切り捨てることができます。最も近い分に締めくくるには、できます。

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