Convert Firebase Firestore Timestamp to Date (Swift)?

18,752

Either do:

let date = postTimestamp.dateValue()

or you could do:

let date = Date(timeIntervalSince1970: postTimestamp.seconds)

See the Timestamp reference documentation.

Share:
18,752
winston
Author by

winston

Updated on June 11, 2022

Comments

  • winston
    winston about 2 years

    I have a date saved in a Firestore field as a timestamp that I want to convert to a Date in Swift:

    June 19,2018 at 7:20:21 PM UTC-4

    I tried the following but I get an error:

    let date = Date(timeIntervalSince1970: postTimestamp as! TimeInterval)

    Error:

    Could not cast value of type 'FIRTimestamp' (0x104fa8b98) to 'NSNumber'

    The reason why I want to convert to Date is so that I can use this Date extension to mimic timestamps you see on Instagram posts:

    extension Date {
        func timeAgoDisplay() -> String {
            let secondsAgo = Int(Date().timeIntervalSince(self))
    
            let minute = 60
            let hour = 60 * minute
            let day = 24 * hour
            let week = 7 * day
    
            if secondsAgo < minute {
                return "\(secondsAgo) seconds ago"
            } else if secondsAgo < hour {
                return "\(secondsAgo / minute) minutes ago"
            } else if secondsAgo < day {
                return "\(secondsAgo / hour) hours ago"
            } else if secondsAgo < week {
                return "\(secondsAgo / day) days ago"
            }
    
            return "\(secondsAgo / week) weeks ago"
        }
    }