【问题标题】:Format NSTimeInterval as Minutes:Seconds:milliseconds将 NSTimeInterval 格式化为 Minutes:Seconds:milliseconds
【发布时间】:2011-09-20 03:37:48
【问题描述】:

谁能告诉我如何在这段代码中显示毫秒?

-(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];
}

【问题讨论】:

    标签: ios objective-c nstimeinterval


    【解决方案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]; 
    }
    

    如果有人想要毫秒到最大 60 比编辑这一行

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

    int millisec = ((milli) % 60);
    

    【讨论】:

    • 如果有人想要毫秒到最大 60 比 edi 这条线 int millisec = ((milli) % 60)+39; to int millisec = ((milli) % 60);
    【解决方案2】:

    我不明白。您不必为毫秒创建一个新变量吗?

    NSInteger milliseconds = (sec * 1000);
    
    durationLabel.text = [NSString stringWithFormat:@"-%02d:%02d.%04d",min,sec, milliseconds, nil];
    

    【讨论】:

    • 这就是我所做的,它仍然以秒为单位计算.. 例如- 02:05.05000, 02:06.0600...我在计算中遗漏了一些将秒数相乘的东西....跨度>
    • 哦,对了....我的大脑又开始工作了...05000 毫秒是 5 秒..!噗!...你知道如何让这个计时器显示每毫秒而不是 1000 人一组?例如- 02:05.1234, 02:05.1235...?
    【解决方案3】:

    我认为这是最简单的解决方案:

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

    将时间格式化为MM:SS.sss。如果你真的想要MM:SS:sss(我不推荐),你可以这样做:

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

    请注意,stringWithFormat: 的参数列表末尾不需要 nil

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多