2010-08-29 13 views
3

Je souhaite conserver la date et l'heure dans un magasin CoreData sans secondes ni millisecondes. (. Je fais un traitement à arrondir dehors des heures et secondes/millisecondes parasites devient une clé de singe) Il est assez facile de laisser tomber les secondes:Comment effacer NSDate millisecondes

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 peux Ne pas trouver un NSMillisecondCalendarUnit que je pourrais utiliser pour mettre à zéro les millisecondes, et je dois le faire. Des idées? Merci.

Répondre

7

timeIntervalSince1970 renvoie le nombre de secondes (en double) depuis le 1er janvier 1970. Vous pouvez utiliser cette durée pour tronquer le nombre de secondes souhaité. Pour arrondir à 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 ce qui précède peut-être suffisamment précis pour vos besoins.

+0

Génial! Je vous remercie! Cela a fonctionné parfaitement. – ed94133