Как рассчитать разницу во времени между текущим и установленным временем в Swift - PullRequest
0 голосов
/ 20 марта 2019

Я пытаюсь вычислить и показать разницу между текущим временем и временем, установленным пользователем.

Вот как я рассчитываю текущее время

currentTimeOutlet.text = DateFormatter.localizedString(from: Date(), dateStyle: .none, timeStyle: .short)

Вот как я могу заставить пользователя ввести желаемое время

  let formatter = DateFormatter()
    formatter.timeStyle = DateFormatter.Style.short
    alarmTimeOutlet.text = formatter.string(from: sender.date)

Вот код, который я пытаюсь использовать для вычисления разницы во времени

let time1 = currentTimeOutlet
    let time2 = alarmTimeOutlet

    let formatter = DateFormatter()
    formatter.dateFormat = "h:mma"

    let date1 = formatter.date(from: time1)!
    let date2 = formatter.date(from: time2)!

    let elapsedTime = date2.timeIntervalSince(date1)
    let hours = floor(elapsedTime / 60 / 60)
    let minutes = floor((elapsedTime - (hours * 60 * 60)) / 60)


    timeDiffOutlet.text = ("\(Int(hours)) hr and \(Int(minutes)) min")

А вот как я планирую это показать

    @IBOutlet weak var timeDiffOutlet: UILabel!

Однако я продолжаю получать сообщения об ошибках "Не удается преобразовать значение типа 'UILabel?' к ожидаемому типу аргумента 'String' "в этих конкретных строках

let date1 = formatter.date(from: time1)!
    let date2 = formatter.date(from: time2)!

Любая помощь будет принята с благодарностью. Спасибо !!

Ответы [ 2 ]

2 голосов
/ 20 марта 2019

Можете ли вы попробовать добавить .text к time1 и time2? Если я хорошо читаю, time1 и time2 - метка. Чтобы получить их String, вы должны добавить .text. Надеюсь, это поможет

0 голосов
/ 20 марта 2019

Проблема в том, что вы пытаетесь преобразовать UILabel в дату, но на самом деле вы хотите преобразовать текст внутри UIlabel в дату.

Попробуйте изменить:

let date1 = formatter.date(from: time1)!
let date2 = formatter.date(from: time2)!

Кому:

let date1 = formatter.date(from: time1.text!)
let date2 = formatter.date(from: time2.text!)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...