这是我的代码:
if let date = messages?.date{
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "h:mm a"
//let elapseTimeInSeconds = NSDate.timeIntervalSince(date)
let elapseTimeInSeconds = Date(timeIntervalSinceNow: (date as? Date))
let secondsInDays: TimeInterval = 60 * 60 * 24
if elapseTimeInSeconds > secondsInDays {
dateFormatter.dateFormat = "EEE"
} else if elapseTimeInSeconds > 7 * secondsInDays {
dateFormatter.dateFormat = "MM/dd/yy"
}
timeLabel.text = dateFormatter.string(from: date as Date)
}
这是错误:
无法转换“日期”类型的值?预期的参数类型 'TimeInterval'(又名'Double')
错误在这一行:
let elapseTimeInSeconds = Date(timeIntervalSinceNow: (date as? Date))
我已经尝试过我所知道的并且没有任何效果。请帮忙。
答案 0 :(得分:17)
您可以直接通过Date
的timeIntervalSinceNow
个属性访问它,也不需要在Swift 3中使用NSDate
直接使用Date
和date(from:)
方法DateFormatter
的{{1}}返回实例Date?
而不是NSDate?
。
let timeInterval = date.timeIntervalSinceNow
您可以使用方法TimeInterval
在两个日期之间获得timeIntervalSince(_:)
。
let timeInterval = date1.timeIntervalSince(date2)
答案 1 :(得分:4)
Swift 3.0
你需要写代码:
let elapseTimeInSeconds = Date().timeIntervalSince(date as Date)
Strong!!! Date() or NSDate().timeIntervalSince(date as Date)