我的代码如下:

func stringFromTimeInterval(interval:NSTimeInterval) -> NSString {

    var ti = NSInteger(interval)
    var ms = ti * 1000
    var seconds = ti % 60
    var minutes = (ti / 60) % 60
    var hours = (ti / 3600)

      return NSString(format: "%0.2d:%0.2d:%0.2d",hours,minutes,seconds,ms)
}

在输出中,毫秒给出错误的结果.请说明如何正确查找毫秒.

推荐答案

Swift支持浮点数的余数计算,所以我们可以使用% 1.

var ms = Int((interval % 1) * 1000)

如下所示:

func stringFromTimeInterval(interval: TimeInterval) -> NSString {

  let ti = NSInteger(interval)

  let ms = Int((interval % 1) * 1000)

  let seconds = ti % 60
  let minutes = (ti / 60) % 60
  let hours = (ti / 3600)

  return NSString(format: "%0.2d:%0.2d:%0.2d.%0.3d",hours,minutes,seconds,ms)
}

结果:

stringFromTimeInterval(12345.67)                   "03:25:45.670"

Swift 4:

extension TimeInterval{

        func stringFromTimeInterval() -> String {

            let time = NSInteger(self)

            let ms = Int((self.truncatingRemainder(dividingBy: 1)) * 1000)
            let seconds = time % 60
            let minutes = (time / 60) % 60
            let hours = (time / 3600)

            return String(format: "%0.2d:%0.2d:%0.2d.%0.3d",hours,minutes,seconds,ms)

        }
    }

使用:

self.timeLabel.text = player.duration.stringFromTimeInterval()

Ios相关问答推荐

如何在SwiftUI中扩展 colored颜色 超出顶部边缘

如何在SwiftUI中顺时针和逆时针两个方向应用旋转效果?

UIAlertController的空子类是否可以与`appearance(whenContainedInInstancesOf:)`一起安全使用

垂直分页 UIScrollView 高度不正确

不可发送类型 '[String : Any]?'在调用非隔离实例方法 XXX 时退出主参与者隔离上下文不能跨越参与者边界

SwiftUI 图表 BarMark 将注释对齐到图表顶部

工具栏底部 iOS 16 - SwiftUI

小部件链接有效,但不执行任何操作

iOS SwiftUI - 从以前的 struct 调用函数

集成 IDNow SDK 时未找到 Xcode FLAnimatedImage.h 文件问题

如何根据设备时间设置 Flutter 应用时间线?

try 在 iOS 中分发 Flutter 应用程序时出现Invalid Provisioning Profile Signature错误

在iOS7半透明导航栏中获取正确的 colored颜色

Swift枚举继承

从 NSData 或 UIImage 中查找图像类型

从 NSUserDefaults 字典 iOS 中删除所有键

在 iOS 8.1 模拟器上更改语言不起作用

cocoapods中~>的用法是什么

从故事板导航到其他 Swift 1.2 文件时 Xcode 6.3 崩溃

UIGestureRecognizer 阻止子视图处理touch 事件