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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top