Come cancellare millisecondi NSDate
-
02-10-2019 - |
Domanda
voglio continuare data / volte in un negozio CoreData senza secondi o millisecondi. (. Sto facendo un po 'di elaborazione di volte il giro largo, e secondi randagi / millisecondi diventare una chiave inglese) E' abbastanza facile far cadere i secondi:
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
Questa grande opera per azzerare i secondi, ma non riesco a trovare un NSMillisecondCalendarUnit ho potuto utilizzare a zero i millesimi di secondo, e ho bisogno di. Qualche idea? Grazie.
Soluzione
timeIntervalSince1970
restituisce il numero di secondi (in un doppio) dal gennaio al 1 °, 1970. È possibile utilizzare questo tempo per troncare qualsiasi quantità di secondi che ti piace. Per lungo giro al minuto più vicino, si potrebbe fare:
NSTimeInterval timeSince1970 = [[NSDate date] timeIntervalSince1970];
timeSince1970 -= fmod(timeSince1970, 60); // subtract away any extra seconds
NSDate *nowMinus = [NSDate dateWithTimeIntervalSince1970:timeSince1970];
I tipi di dati in virgola mobile sono intrinsecamente imprecise, ma quanto sopra possono essere abbastanza preciso per le vostre esigenze.