当前位置: 首页 > 面试题库 >

从NSTimeInterval迅速转换为时,分,秒,毫秒

卓新知
2023-03-14
问题内容

我的代码在这里:

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"

斯威夫特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()


 类似资料:
  • 问题内容: 我在Microsoft SQL Server 2008R2中有一个bigint字段,其中充满了刻度线(单个刻度线代表一百纳秒或一千万分之一秒。在一毫秒内有10,000个刻度。) http://msdn.microsoft.com/zh- CN/library/system.datetime.ticks.aspx 我需要将所有记录的总和转换为Days:Hours:Minutes:Seco

  • 问题内容: 我正在编写一个赛车应用程序,想要将大量毫秒转换为minutes:seconds.milliseconds(例如)。目前,我只是通过数学()进行运算,然后求余数并进一步除法,依此类推,但是我发现它时不时关闭1毫秒。我知道这听起来似乎没什么大不了的,但是我试图找到和的平均值,然后返回,这意味着它输入不正确,而应用程序的其余部分无法处理。 有没有一种方法使用或格式化毫秒到MM或类似的东西:s

  • 我从GPS接收机接收到一个时间戳,它以秒后的微秒时间表示:

  • 问题内容: 我需要将毫秒值85605304.3587转换为类似0d 18h 21m的值。不知道如何启动它,是否像C#中的SQL中有类似TimeSpan的东西? 问题答案: 您可以显式进行计算。我认为是这样: 注意:某些数据库使用代替。

  • 问题内容: 如何在Linux中手动将抖动转换为毫秒,反之亦然?我知道内核2.6具有此功能,但是我正在研究2.4(家庭作业),尽管我看了一下代码,但它使用了许多宏常量,我不知道它们是否在2.4中定义。 问题答案: 如先前的回答所述,增量的速率是固定的。 为接受的函数指定时间的标准方法是使用常数。 那是Hertz的缩写,或每秒的刻度数。在计时器滴答设置为1ms的系统上,HZ = 1000。一些发行版或

  • 这个问题我已经研究了一段时间,但我只能得到秒数,下面是给我的说明:编写一个程序,从代表纳秒数的标准输入中读取一个非负整数。然后,程序编写一行输出,给出等效的天、小时、分钟、秒、毫秒、微秒和纳秒的数量。例如,输入为123456789123456789。则输出为:123456789123456789纳秒等于1428天、21小时、33分钟、9秒、123毫秒、456微秒和789纳秒。这是我写的: }