Search code examples
swiftfirebasedatefirebase-realtime-databasemilliseconds

How to convert the Firebase ServerValue.timestamp() to date or to millisecond using swift 4


Here, I want to convert the timestamp to millisecond but was unable to convert. Please help.


Solution

  • Finally, I found the answer

    Step 1: Add the Object Mapper Pod dependency

    Step 2: Create a FirebaseDateTransform class with type TransformType and override the function transformFromJSON(...)

    //  Created by Bipin on 9/26/18.
    //  Copyright © 2018 profyl.org. All rights reserved.
    //
    
    import Foundation
    import ObjectMapper
    import Firebase
    
    enum FirebaseDate {
        case date(Date)
        case serverTimestamp
    
        var date: Date {
            switch self {
            case .date(let date):
                return date
            case .serverTimestamp:
                return Date()
            }
        }
    }
    
    class FirebaseDateTransform: TransformType {
        public typealias Object = FirebaseDate
        public typealias JSON = Any
    
        open func transformFromJSON(_ value: Any?) -> FirebaseDate? {
            switch value {
            case is [AnyHashable: Any]?:
                return .serverTimestamp
            default:
                return nil
            }
        }
    
        open func transformToJSON(_ value: FirebaseDate?) -> Any? {
            switch value {
            case .serverTimestamp?:
                return ServerValue.timestamp()
            default:
                return nil
            }
        }
    
    
        open func getFirebaseTimestamp()->String{
    
            return String(transformFromJSON(ServerValue.timestamp())!.date.toMillis())
    
        }
    }
    

    Step 3: Extension to convert date to millisecond.

    extension Date {
        func toMillis() -> Int64! {
            return Int64(self.timeIntervalSince1970 * 1000)
        }
    }