如何使用 swift 4 将 Firebase ServerValue.timestamp() 转换为日期或毫秒

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

这里,我想将时间戳转换为毫秒,但无法转换。请帮忙

如下延长日期 class 以从时间戳转换为日期:

extension Date {
    var millisecondsSince1970:Int {
        return Int((self.timeIntervalSince1970 * 1000.0).rounded())
    }

    init(milliseconds:Int) {
        self = Date(timeIntervalSince1970: TimeInterval(milliseconds / 1000))
    }
}

从 firebase 获取后,您可以将时间戳转换为日期

let date = Date.init(milliseconds:object.startDate!)

终于找到答案了

第一步:添加Object MapperPod依赖

第 2 步: 创建类型为 TransformTypeFirebaseDateTransform class 并覆盖函数 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())

    }
}

第 3 步: 日期转换为毫秒 .

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