这是一个具有分钟和秒的常规计时器(chrono)。 它工作正常,但有一种方法可以使用NSDateFormatter获得相同的结果。
var min = 0
var sec = 0
func stringFromTimeInterval(interval: NSTimeInterval) -> String {
let interval = Int(interval)
let seconds = interval % 60
let minutes = (interval / 60)
return String(format: "%2d:%02d",minutes, seconds)
}
func updateTimer(){
sec++
self.timeElapsed.text = self.stringFromTimeInterval(Double(sec))
}
这是我的尝试:
var sec = 0
func theTime(interval:NSTimeInterval) -> String {
var dateFormatter = NSDateFormatter()
var date = NSDate(timeIntervalSince1970: NSTimeInterval())
dateFormatter.dateFormat = "mm:ss"
return dateFormatter.stringFromDate(date)
}
func updateTheTime(){
sec++
self.newTimer.text = self.theTime(Double(sec))
}
答案 0 :(得分:1)
您可以使用NSDate和NSDateFormatter来获取时间字符串。 创建NSDateFormatter和NSDate的对象,然后将您的时间样式设置为NSDateFormmatter,然后调用stringFromDate获取时间字符串。
var dateFormatter = NSDateFormatter()
var date = NSDate(timeIntervalSince1970: interval)
dateFormatter.dateFormat = "mm-ss"
dateFormatter.stringFromDate(date)
答案 1 :(得分:1)
您可以使用NSDateComponentsFormatter
。
class ViewController: UIViewController {
// 1
var startDate: NSDate!
// 2
@IBOutlet weak var timerLabel: UILabel!
// 3
func tick() {
// 4
let elapsed = NSDate().timeIntervalSinceDate(startDate)
// 5
let formattedTime = NSDateComponentsFormatter().stringFromTimeInterval(elapsed)
// 6
timerLabel.text = formattedTime
}
// 7
@IBAction func startButtonPressed() {
// 8
startDate = NSDate()
// 9
NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "tick", userInfo: nil, repeats: true)
}
}
这是Swift代码中发生的事情:
startDate
属性将在startButtonPressed()
timerLabel
将显示输出。这是一个标准的UILabel
。tick()
将从NSTimer调用elapsed
计算自startDate
以来已经过了多长时间。 NSDate()
是获取当前日期的便捷方式。NSDateComponentsFormatter
将为经过的时间输出正确修剪的String
。formattedTime
显示在屏幕上startButtonPressed()
。startDate
属性设置为当前日期。NSTimer
每1秒拨打一次tick()
。以下是实践中的截图: