将秒转换为分钟:MacOS 标签中的秒

Posted

技术标签:

【中文标题】将秒转换为分钟:MacOS 标签中的秒【英文标题】:Convert seconds to Minutes:Seconds in label MacOS 【发布时间】:2018-07-06 21:33:27 【问题描述】:

我是一名学校老师,我们被“命令”在我们的课程中使用特定的计时器,这在我们的 Apple iMac 上不起作用。我正在尝试在 xcode 中创建自己的,到目前为止已经创建了一个基本窗口,它将在几秒钟内倒计时一个标签。我现在已经分配了按钮并且它们可以工作(以 60 秒为增量)。

这很好用,但理想情况下我希望标签显示分钟和秒(对孩子们来说更容易)。编写此代码的最佳方法是什么?我上次使用 xcode 是在 2009 年,现在我已经过时了!!提前致谢

--

    @objc func updateTimer() 

    seconds -= 1     //This will decrement(count down)the seconds.
    countdownLabel.stringValue = "\(seconds)" //This will update the label.

--

    @objc func runTimer() 
    timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector:(#selector(ViewController.updateTimer)), userInfo: nil, repeats: true)

--

    @IBAction func threeMin(_ sender: Any) 
    seconds = 180
    runTimer()

--

【问题讨论】:

您好,欢迎来到本站。如果您添加主要语言标签,更多人会看到您的问题。 (这是 Swift 吗?如果是,只需 edit the question 和例如在底部的标签框中添加 swift 标签。) 欢迎来到 Stack Overflow!请添加图像而不是图像而不是链接。这次我为您完成了这项工作 - 请参阅 the editing help 了解有关格式化的更多信息。 感谢您的帮助和建议,我尝试了该图像,但由于声誉点,它允许我使用。感谢整理 【参考方案1】:

有很多解决方案。一个方便的是DateComponentsFormatter

let formatter : DateComponentsFormatter = 
    let formatter = DateComponentsFormatter()
    formatter.allowedUnits = [.minute, .second]
    return formatter
()

@objc func updateTimer() 
    seconds -= 1    
    countdownLabel.stringValue = formatter.string(from: TimeInterval(seconds))!


一些改进:

为所有按钮分配标签,其值以秒为单位,例如将 threeMin 按钮的标签设置为 180。然后仅使用 一个 IBAction 并将所有按钮连接到该操作。

在动作中首先检查计时器是否正在运行,只有在它没有运行时才启动它

var timer : Timer?

@IBAction func startTimer(_ sender: NSButton) 
   if timer == nil 
      seconds = sender.tag
      timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(ViewController.updateTimer), userInfo: nil, repeats: true)

    

创建一个函数来可靠地停止计时器

func stopTimer() 
    if timer != nil 
       timer?.invalidate()
       timer = nil
     

如果seconds 为0,则在updateTimer() 函数中停止计时器

@objc func updateTimer() 
    seconds -= 1    
    countdownLabel.stringValue = formatter.string(from: TimeInterval(seconds))!
    if seconds == 0  stopTimer() 

【讨论】:

以上是关于将秒转换为分钟:MacOS 标签中的秒的主要内容,如果未能解决你的问题,请参考以下文章

js将秒转换为时分秒

将秒格式化为 SQL 报表生成器 Y 轴标签的天、小时、分钟、秒

将秒值转换为小时分钟秒?

如何在 Swift3 中以秒为单位将字符串更改为分钟?

将秒转换为(小时:分钟:秒:毫秒)时间的最佳方法是啥?

如何将秒转换为小时、分钟和秒?