我如何将 Date 转换为 TimeInterval 以便我可以使用 if 语句

How do i convert Date to TimeInterval so I can use the if statements

这是我的代码:

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)
        }

这是错误:

Cannot convert value of type 'Date?' to expected argument type 'TimeInterval' (aka 'Double')

错误在这一行:

let elapseTimeInSeconds = Date(timeIntervalSinceNow: (date as? Date))

我已经尝试了我所知道的,但没有任何效果。请帮忙。

可以通过Date的属性 timeIntervalSinceNow直接访问,也不需要在Swift中使用NSDate 3 直接使用[= DateFormatter 的 13=] 和 date(from:) 方法 Date? 的 return 实例不是 NSDate?.

let timeInterval = date.timeIntervalSinceNow

并且您可以使用方法 timeIntervalSince(_:) 在两个日期之间获得 TimeInterval

let timeInterval = date1.timeIntervalSince(date2)

Swift 3.0

你需要这样写代码:

let elapseTimeInSeconds = Date().timeIntervalSince(date as Date) 

Strong!!! Date() or NSDate().timeIntervalSince(date as Date)