2011-09-20 5 views
0

Quelqu'un peut-il me dire comment afficher les millisecondes dans ce code?Format NSTimeInterval en minutes: secondes: millisecondes

-(void)updateViewForPlayerInfo:(AVAudioPlayer*)p { 
    countdownTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateTimeLeft)userInfo:p repeats:YES]; 
} 

- (void)updateTimeLeft { 
    NSTimeInterval timeLeft = player.duration - player.currentTime; 

    int min=timeLeft/60; 
    int sec=lroundf(timeLeft) % 60; 

    durationLabel.text = [NSString stringWithFormat:@"-%02d:%02d",min,sec,nil]; 
} 

Répondre

0

Je ne comprends pas. Ne suffit-il pas de créer une nouvelle variable pour les millisecondes?

NSInteger milliseconds = (sec * 1000); 

durationLabel.text = [NSString stringWithFormat:@"-%02d:%02d.%04d",min,sec, milliseconds, nil]; 
+0

C'est ce que j'ai fait et ça compte encore en secondes .. par exemple - 02: 05.05000, 02: 06.0600 ... Il me manque quelque chose dans mon calcul qui multiplie les secondes .... –

+0

oh right .... mon cerveau a juste commencé à fonctionner à nouveau ... 05000 millisecondes est de 5 secondes ..! Pft! ... Avez-vous une idée de comment je peux obtenir cette minuterie pour afficher chaque milliseconde et pas dans des groupes de 1000? par exemple: 02: 05.1234, 02: 05.1235 ...? –

1
[NSTimer scheduledTimerWithTimeInterval:0.0167 target:self selector:@selector(updateTimer) userInfo:nil repeats:YES]; 

-(void)updateTimer { 
    countDownTotalTimer++;  
    TotalTime.text=[self timeFormatted:countDownTotalTimer]; 
} 

- (NSString *)timeFormatted:(int)milli 
{ 
    int millisec = ((milli) % 60)+39; 
    int sec = (milli/60) % 60; 
    int min = milli/3600; 

    return [NSString stringWithFormat:@"%02d:%02d:%02d",min, sec, millisec]; 
} 

Si veut millisecondes maximum 60 que de modifier cette ligne

int millisec = ((milli) % 60)+39; 

à

int millisec = ((milli) % 60); 
+0

si on veut des millisecondes à 60 maxi que edi cette ligne int millisec = ((milli)% 60) +39; à int millisec = ((milli)% 60); – SALMAN

0

Je pense que c'est la solution la plus simple:

durationLabel.text = [NSString stringWithFormat:@"-%02d:%06.3f", 
    (int)(timeLeft/60), fmod(timeLeft, 60)]; 

Formate l'heure en tant que MM:SS.sss. Si vous voulez vraiment comme MM:SS:sss (que je ne recommande pas), vous pouvez le faire:

durationLabel.text = [NSString stringWithFormat:@"-%02d:%02d:%03.0f", 
    (int)(timeLeft/60), (int)fmod(timeLeft, 60), 1000*fmod(timeLeft, 1)]; 

Notez que stringWithFormat: ne nécessite pas nil à la fin de la liste des arguments.

Questions connexes