Как преобразовать Firebase ServerValue.timestamp () в дату или в миллисекунды, используя swift 4 - PullRequest
0 голосов
/ 26 сентября 2018

Здесь я хочу преобразовать метку времени в миллисекунды, но не смог преобразовать.Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Наконец-то я нашел ответ

Шаг 1: Добавьте Object Mapper PodЗависимость

Шаг 2: Создать класс FirebaseDateTransform с типом TransformType и переопределить функцию 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)
    }
}
0 голосов
/ 26 сентября 2018

Расширьте класс Date следующим образом, чтобы преобразовать его в Date из отметки времени:

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

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

, после чего вы можете преобразовать отметку времени в Date после извлечения из базы данных

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