nsdateミリ秒をクリアする方法
-
02-10-2019 - |
質問
数秒またはミリ秒のないコリダタストアに日付/時間を維持したいと思います。 (私はいくつかの処理を行って時間を丸めていますが、数秒/ミリ秒が猿のレンチになります。)数秒を落とすのは簡単です:
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];
フローティングポイントデータ型は本質的に不正確ですが、上記はお客様のニーズに合わせて十分に正確になる場合があります。
所属していません StackOverflow