Wie NSDate Millisekunden löschen
-
02-10-2019 - |
Frage
Ich will keine Sekunden oder Millisekunden in einem Coredata speichert Datum / Zeit Schritt halten. (. Ich mache einige Verarbeitung zu Rundenzeiten ab und Streu Sekunden / Millisekunden zu einem Schraubenschlüssel) Es ist einfach genug, um die Sekunden zu löschen:
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
Dies funktioniert gut die Sekunden auf Null aus, aber ich kann nicht ein NSMillisecondCalendarUnit I auf Null aus den Millisekunden verwenden könnte finden, und ich muß. Irgendwelche Ideen? Danke.
Lösung
timeIntervalSince1970
gibt die Anzahl der Sekunden (im Doppel) seit dem 1. Januar 1970. Sie diese Zeit nutzt, kann eine beliebige Anzahl von Sekunden verkürzen Sie mögen. Zur Abrundung auf die nächste Minute, könnten Sie tun:
NSTimeInterval timeSince1970 = [[NSDate date] timeIntervalSince1970];
timeSince1970 -= fmod(timeSince1970, 60); // subtract away any extra seconds
NSDate *nowMinus = [NSDate dateWithTimeIntervalSince1970:timeSince1970];
Gleitkomma-Datentypen sind von Natur aus ungenau, aber die oben kann präzise genug für Ihre Bedürfnisse.