FirebaseServerValue.timestamp()给出了未来的时间

时间:2016-02-14 08:05:24

标签: ios swift firebase

我使用observeEventType .ChildAdded来加载包含Firebase服务器所有时间戳的所有邮件。问题是Firebase始终首先触发占位符时间戳(也称为本地时间),然后将其替换为具有来自服务器的正确时间戳的第二个回调。此行为需要加载消息页两次以获取正确的时间戳,因为它第一次只显示本地时间。好吧,我已经找到了一种只显示正确时间戳的方法。通过使用.ChildChanged,我可以忽略第一个时间戳并只检索第二个时间戳。然而,这次回电给了我未来的时间,恰好提前两分钟,我不知道如何解决这个问题。我用Google搜索了几天,但没有运气。请帮帮我。以下是我的代码:

保存时间戳:

let timestamp = FirebaseServerValue.timestamp() let newData = ["sender":     "John", "timestamp": timestamp]
ref.childByAppendingPath("messages").childByAppendingPath(ref.authData.uid).setValue(newData)

在我的消息VC中,检索时间戳:

    handle = ref.observeEventType(.ChildChanged, withBlock: { (snapshot) in

    let text = snapshot.value["message"] as! String

    let sender = snapshot.value["sender"] as! String

    let timestamp = snapshot.value["timestamp"] as! NSTimeInterval

    let date = NSDate(timeIntervalSince1970: timestamp/1000)

    // TESTING DATE
    let dateFormatter = NSDateFormatter()

    dateFormatter.AMSymbol = "AM"

    dateFormatter.PMSymbol = "PM"

    dateFormatter.dateFormat = "hh:mm, MM'/'dd'/'YY"

    let dateString = dateFormatter.stringFromDate(date)

    print(dateString)

输出

03:37, 02/14/16

但当前时间是:

02:35, 02/14/16

0 个答案:

没有答案