작성
·
266
0
Stop Watch 강의도중 시간, 분, 초를 출력해보고 싶어서 코드를 짯습니다.
근데 start 버튼을 누르면 바로 hour부분이 09가 됩니다.
코드입니다.
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var labelHour: UILabel!
@IBOutlet weak var labelMinute: UILabel!
@IBOutlet weak var labelSecond: UILabel!
@IBOutlet weak var startStopButton: UIButton!
@IBOutlet weak var resetButton: UIButton!
var isStart = false
var timer = Timer()
var startTime = 0.0
var elapsed = 0.0
@IBAction func startStop(_ sender: Any) {
if isStart{
startStopButton.setTitle("Start", for: .normal)
timer.invalidate()
}else{
startStopButton.setTitle("Stop", for: .normal)
startTime = Date().timeIntervalSince1970 - elapsed
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateTime), userInfo: nil, repeats: true)
}
isStart.toggle()
}
@IBAction func reset(_ sender: Any) {
labelHour.text = "00"
labelMinute.text = "00"
labelSecond.text = "00"
elapsed = 0.0
startTime = Date().timeIntervalSince1970 - elapsed
startStopButton.setTitle("Start", for: .normal)
timer.invalidate()
isStart.toggle()
}
override func viewDidLoad() {
super.viewDidLoad()
labelHour.text = "00"
labelMinute.text = "00"
labelSecond.text = "00"
startStopButton.setTitle("Start", for: .normal)
resetButton.setTitle("Reset", for: .normal)
}
@objc func updateTime(){
elapsed = Date().timeIntervalSince1970 - startTime
let df = DateFormatter()
let date = Date(timeIntervalSince1970: elapsed)
df.dateFormat = "HH"
labelHour.text = df.string(from: date)
df.dateFormat = "mm"
labelMinute.text = df.string(from: date)
df.dateFormat = "ss"
labelSecond.text = df.string(from: date)
}
}
아래 사진은 5분 28초 경과 사진입니다.
답변 2
1
안녕하세요.
한국의 timezone이 자동으로 잡혀 있어서 표준시간 +9가 되어 있는 상태 입니다. (나라마다 +- 되는 시간이 다르답니다.)
그래서 9시간이 더 잡혀있어서
아래와 같이 DateFormatter의 타임존 값을 0으로 만들어 놓아야 합니다.
그러면 0으로 나오는걸 확인할 수 있으실 겁니다.
df.timeZone = TimeZone(secondsFromGMT: 0)
0