Как вычесть 30 минут из интервала времени в Swift? - PullRequest
0 голосов
/ 12 июня 2019

Я сделал приложение с DatePicker и 2 кнопками - «Check in» и «Check out». Я сделал расчет между двумя временными метками в часах и минутах. Теперь я хочу вычесть 30 минут из этого временного интервала, ЕСЛИ «Регистрация» до 12:00.

Это мой код:

var start = Date()

var end = Date()

class ViewController: UIViewController {

@IBOutlet weak var timeWheel: UIDatePicker!
@IBOutlet weak var workLabel: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()
}

@IBAction func checkIn(_ sender: Any) {
    start = timeWheel.date
    workLabel.text = ""
}

@IBAction func checkOut(_ sender: Any) {
    end = timeWheel.date
    let difference = Calendar.current.dateComponents([.hour, .minute], from: start, to: end)
    workLabel.text = "\(difference.hour ?? 0) timer og \(difference.minute ?? 0) minutter"
}
}

Есть предложения?

1 Ответ

0 голосов
/ 12 июня 2019

Перед вычислением разницы получите hour компонент start и убедитесь, что он меньше 12. Если да, вычтите 30 минут, а затем выполните математические вычисления

@IBAction func checkOut(_ sender: Any) {
    end = timeWheel.date
    let calendar = Calendar.current
    let startHour = calendar.component(.hour, from: start)
    let startDate = startHour < 12 ? calendar.date(byAdding: .minute, value: 30, to: start)! : start
    let difference = calendar.dateComponents([.hour, .minute], from: startDate, to: end)
    workLabel.text = "\(difference.hour!) timer og \(difference.minute!) minutter"
}

Принудительное развертывание компонентов:отлично, так как оба компонента были четко запрошены.

...