swiftで特定の日付までカウントダウンするコードを書いています。
文字列の日付までのカウントダウンは動くのですが、任意の日付(今回はendTime = Date(timeInterval: 606024 , since: startTime)でstartTimeの一日後にしてあります)にするとラベルに表示はされますがカウントダウンされません。任意の日付に対してもカウントダウンさせるためには、どう直したらよろしいでしょうか。ご教示お願いいたします。
言語swift5,開発環境Xcode10.3
swift
1 2import UIKit 3 4class ViewController: UIViewController { 5 6 var timer : Timer? 7 var diff : Date! 8 var diff2 :Date! 9 var stopTime : Date! 10 @IBOutlet weak var label: UILabel! 11 let currentDate = Date() 12 let dateFormatter = DateFormatter() 13 14 let userCalendar = Calendar.current 15 16 let requestedComponent: Set<Calendar.Component> = [.day,.hour,.minute,.second] 17 18 override func viewDidLoad() { 19 super.viewDidLoad() 20 // Do any additional setup after loading the view. 21 /* timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(printTime), userInfo: nil, repeats: true) 22 timer.fire() 23 */ 24 } 25 26 @IBAction func start(_ sender: Any) { 27 28 if stopTime == nil { 29 if let startTiemr = timer { 30 if startTiemr.isValid == true { 31 return 32 } 33 } 34 timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(printTime), userInfo: nil, repeats: true) 35 } 36 37 } 38 39 @objc func printTime() 40 { 41 dateFormatter.dateFormat = "dd/MM/yy hh:mm:ss" 42 43 let startTime = Date() 44 let endTime = Date(timeInterval: 60*60*24 , since: startTime) 45 let timeDifference = userCalendar.dateComponents(requestedComponent, from: startTime, to: endTime) 46 label.text = "(timeDifference.day!) Days (timeDifference.hour!) Hours (timeDifference.minute!) Minutes (timeDifference.second!) Seconds" 47 } 48} 49 50//endTimeが以下のように文字列で決まっている場合はカウントダウンが動きます。 51 dateFormatter.dateFormat = "dd/MM/yy hh:mm:ss" 52 let startTime = Date() 53 let endTime = dateFormatter.date(from: "16/4/20 00:01:30") 54 let timeDifference = userCalendar.dateComponents(requestedComponent, from: startTime, to: endTime!) 55 56 label.text = "(timeDifference.day!) Days (timeDifference.hour!) Hours (timeDifference.minute!) Minutes (timeDifference.second!) Seconds"
回答1件
あなたの回答
tips
プレビュー