QuartzCoreを使用してストップウォッチの表示を00:00:00に開始する方法が見つかりません。常に07:00:00に始まります。Swiftのデフォルトの07:00:00ではなく00:00:00にelapsedTimeを開始する方法
開始時刻を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))
}
}
これは、タイムゾーンの問題のように聞こえます。あなたはGMT + 7にいますか?フォーマッタのタイムゾーンをGMTに設定してみてください。 – Thilo
ポインタをありがとう、それは助けた。私はformatter.timeZone = NSTimeZone(名前: "GMT")を追加しました! TimeZoneとして – Starkus