如何格式化elapsedTime从00:00:00开始,而不是Swift中的默认值07:00:00

时间:2017-11-20 07:44:11

标签: ios swift quartz-core

我找不到使用QuartzCore让秒表显示在00:00:00开始的方法。它总是从07:00:00开始。

有没有办法将开始时间格式化为00:00:00?代码如下。

谢谢!

类别:

import Foundation
import QuartzCore

class StopWatch: NSObject{

private var displayLink: CADisplayLink!
private let formatter = DateFormatter()

var callback: (() -> Void)?
var elapsedTime: CFTimeInterval!

override init() {
    super.init()
    self.displayLink = CADisplayLink(target: self, selector: #selector(tick(sender:)))
    displayLink.isPaused = true
    displayLink.add(to: RunLoop.main, forMode: RunLoopMode.commonModes)
    self.elapsedTime = 0.0
    formatter.dateFormat = "HH:mm:ss"
}
convenience init(withCallback callback: @escaping () -> Void) {
    self.init()
    self.callback = callback
}
deinit {
    displayLink.invalidate()
}

func tick(sender: CADisplayLink) {
    elapsedTime = elapsedTime + displayLink.duration
    callback?()
}


func elapsedTimeAsString() -> String {
    return formatter.string(from: Date(timeIntervalSinceReferenceDate:elapsedTime))
}

}

1 个答案:

答案 0 :(得分:1)

正如下面评论中提到的那样: 正如上面提到的那样,这是一个时区问题,因为我位于GMT +7。我添加了以下代码来解决问题:

formatter.timeZone = TimeZone(缩写:“GMT”)!