使用Swift查找NSDates之间的时间差(以秒为单位)

我在写一段代码,我想计算一个按钮按下多长时间。为了做到这一点,我记录了一个NSDate()当按钮被按下,并尝试使用timeIntervalSinceDate函数时释放按钮。这似乎工作,但我找不到任何方式打印结果或将其切换到一个整数。
var timeAtPress = NSDate() 

@IBAction func pressed(sender: AnyObject) {
    println("pressed")
    timeAtPress = NSDate()
}

@IBAction func released(sender: AnyObject) {
    println("released")
    var elapsedTime = NSDate.timeIntervalSinceDate(timeAtPress)
    duration = ???
}

我看过一些类似的问题,但我不知道C,所以我很难理解给出的答案。如果有一个更有效的方法来确定按钮被按下多长时间我接受建议。提前致谢。

您尝试计算elapsedTime时间不正确。在Swift 3中,它将是:
let elapsed = Date().timeIntervalSince(timeAtPress)

或者,在Swift 2:

let elapsed = NSDate().timeIntervalSinceDate(timeAtPress)

注意NSDate引用之后的()。 NSDate()/ Date()实例化一个新的日期对象,然后timeIntervalSinceDate返回它和timeAtPress之间的时间差。这将返回一个浮点值(技术上,一个NSTimeInterval / TimeInterval)。

如果你想把它截断为Int值,你可以使用:

let duration = Int(elapsed)

而且,BTW,你的timeAtPress变量的定义不需要实例化一个NSDate对象。我想你打算:

var timeAtPress: Date!  // use `NSDate!` in Swift 2

这将变量定义为NSDate变量(隐式解包的变量),但你可能推迟该变量的实例化直到按下被调用。

或者,我经常使用CFAbsoluteTimeGetCurrent(),例如,

var start: CFAbsoluteTime!

当我想设置startTime,我做以下:

start = CFAbsoluteTimeGetCurrent()

当我想计算经过的秒数,我做以下:

let elapsed = CFAbsoluteTimeGetCurrent() - start

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...