Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使用NSDateFormatter创建计时器(chrono)?_Ios_Swift_Nsdateformatter - Fatal编程技术网

Ios 如何使用NSDateFormatter创建计时器(chrono)?

Ios 如何使用NSDateFormatter创建计时器(chrono)?,ios,swift,nsdateformatter,Ios,Swift,Nsdateformatter,这是一个有分和秒的常规计时器(chrono)。 它工作得很好,但是有没有一种方法可以使用NSDateFormatter获得相同的结果 var min = 0 var sec = 0 func stringFromTimeInterval(interval: NSTimeInterval) -> String { let interval = Int(interval) let seconds = interval % 60 let minutes = (inter

这是一个有分和秒的常规计时器(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))
  }
  • 我做错了什么,因为总是00:00
  • 我怎样才能让它工作
您可以使用NSDate和NSDateFormatter获取时间字符串。 创建NSDateFormatter和NSDate的对象,然后将时间样式设置为NSDateFormmatter,然后调用stringFromDate获取时间字符串

    var dateFormatter = NSDateFormatter()
    var date = NSDate(timeIntervalSince1970: interval)
    dateFormatter.dateFormat = "mm-ss"
    dateFormatter.stringFromDate(date)

您可以使用
nsdatecomponentsformter

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
    将显示输出。它是一个标准的
    ui标签
  • tick()
    将从NSTimer调用
  • 已用时间
    计算自
    开始日期
    以来已用的时间
    NSDate()
    是获取当前日期的简便方法
  • 这就是魔法发生的地方。
    nsdatecomponentsformter
    将输出经过时间正确修剪的
    字符串
  • formattedTime
    将显示在屏幕上
  • startButtonPressed()
    在用户点击开始按钮时被调用
  • startDate
    属性设置为当前日期
  • NSTimer
    将每隔1秒调用
    tick()
  • 下面是一个屏幕截图,显示了它在实际操作中的样子:

    • 四秒钟过去了
    • 一分四秒过去了

    考虑改进您的答案。为了使计时器工作,我在函数体中添加了变量sec作为NSTimeInterval的参数,如下所示:var date=NSDate(timeIntervalSince1970:NSTimeInterval(sec))