我正在尝试计算并显示当前时间与用户设置时间之间的时差。
这是我计算当前时间的方式
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)!
任何帮助将不胜感激。谢谢!
答案 0 :(得分:2)
您可以尝试将.text
添加到time1
和time2
吗?如果我读得很好,time1
和time2
就是标签。要获得其字符串,应添加.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!)