如何在Swift中计算当前时间与设置时间之间的时差

时间:2019-03-20 14:51:21

标签: swift xcode time

我正在尝试计算并显示当前时间与用户设置时间之间的时差。

这是我计算当前时间的方式

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 个答案:

答案 0 :(得分:2)

您可以尝试将.text添加到time1time2吗?如果我读得很好,time1time2就是标签。要获得其字符串,应添加.text。 希望对您有帮助

答案 1 :(得分:0)

问题是您试图将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!)