首页 > 解决方案 > 根据时间创建 if 语句

问题描述

我希望我的快速代码遵循基于特定时间的 if 语句。我的计时器现在是军用时间。所以我想做一些事情,比如时间是 01:00 到 01:59。然后视图背景颜色应变为蓝色。所以我只是想在时间样式中控制小时时间。

import UIKit

class ViewController: UIViewController {
    var box = UILabel()

    @objc func tick() {
        box.text = DateFormatter.localizedString(from: Date(), dateStyle: .none, timeStyle: .short)
    }
    
    var timer = Timer()

    var currentDateTime = Date()

    lazy var dateFormatter: DateFormatter = {
        let formatter = DateFormatter()
        formatter.dateFormat = "hh:mm" // or "hh:mm a" if you need to have am or pm symbols
        return formatter
    }()

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(true)
        
        dateFormatter.timeStyle = .medium

        box.text = "\(dateFormatter.string(from: currentDateTime))"      
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        box.text = DateFormatter.localizedString(from: Date(), dateStyle: .none, timeStyle: .short)
        timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector:#selector(self.tick) , userInfo: nil, repeats: true)
        box.translatesAutoresizingMaskIntoConstraints = false
        view.addSubview(box)
        box.backgroundColor = .red   
        NSLayoutConstraint.activate([
            box.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 0.5),
            box.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.5),
            box.centerXAnchor.constraint(equalTo: view.centerXAnchor),
            box.centerYAnchor.constraint(equalTo: view.centerYAnchor),
        ])
    }

}

标签: swiftif-statementtimernsdateformattertimespan

解决方案


如果我完全理解你想要做什么,这段代码应该可以帮助你:

...
    var box = UILabel()

    @objc func tick() {
        box.text = DateFormatter.localizedString(from: Date(), dateStyle: .none, timeStyle: .short)
        
        let minutesNow = getMinutesFromDate(date: Date())
        
        if  minutesNow >= 60 && minutesNow < 120  {
            box.backgroundColor = .blue
        }
        else {
            box.backgroundColor = .red
        }
    }
    
    func getMinutesFromDate(date: Date) -> Int {
        let dateComponents = Calendar.current.dateComponents([.hour, .minute], from: date)
        let minutes = ((dateComponents.hour ?? 0) * 60) + (dateComponents.minute ?? 0)
        return minutes
    }
...

推荐阅读