Question

Je veux garder la date / fois dans un magasin CoreData sans secondes ou en millisecondes. (. Je fais un traitement à temps Complètent et secondes / millisecondes parasites deviennent une clé de singe) Il est assez facile de laisser tomber les secondes:

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

Cela fonctionne très bien à zéro les secondes, mais je ne peux pas trouver un NSMillisecondCalendarUnit je pourrais utiliser à zéro les millisecondes, et je dois. Des idées? Merci.

Était-ce utile?

La solution

timeIntervalSince1970 retourne le nombre de secondes (en double) depuis le 1er Janvier 1970. Vous pouvez utiliser ce temps pour tronquer une quantité de secondes que vous voulez. Pour descendre autour à la minute près, vous pourriez faire:

NSTimeInterval timeSince1970 = [[NSDate date] timeIntervalSince1970];

timeSince1970 -= fmod(timeSince1970, 60); // subtract away any extra seconds

NSDate *nowMinus = [NSDate dateWithTimeIntervalSince1970:timeSince1970];

Types de données à virgule flottante sont par nature imprécises, mais ci-dessus peuvent être suffisamment précis pour vos besoins.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top