![](/img/trans.png)
[英]How to decode a TimeStamp from the firebase Firestore in swift
[英]How to read a Firestore timestamp in Swift
我正在尝试从我的 Firestore 数据库中读取时间戳并最终将其转换为日期,但出于某种原因我的代码似乎没有返回任何内容。 相反,它似乎只使用我提供的默认值,即 0,因此它始终显示为 1970 年 1 月 1 日。
我试图在 Firestore 中阅读的文档包含一个名为日期的字段,它具有一种时间戳类型。 文档中还有其他字段,但为了简单起见,我将这些字段排除在这个问题之外。 作为参考,文档中的其他字段已成功读取。
我试过下面的代码。 请注意,我已将 Firebase 导入到 class:
surveyDataCollectionRef.whereField("uid", isEqualTo: Auth.auth().currentUser?.uid ?? "").getDocuments { (snapshot, error) in
if let err = error {
debugPrint("Error fetching docs: \(err)")
} else {
guard let snap = snapshot else { return }
for document in snap.documents {
let data = document.data()
let timestamp = data["date"] as? TimeInterval ?? 0
let date = Date(timeIntervalSince1970: timestamp)
dateFormatter.timeZone = TimeZone(abbreviation: "GMT")
dateFormatter.locale = NSLocale.current
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm"
let strDate = dateFormatter.string(from: date)
let newSurvey = Survey(date: strDate)
self.surveys.append(newSurvey!)
self.currentSurveys = self.surveys
}
self.tableView.reloadData()
}
}
}
经过更多的试验和错误后,我发现下面的代码似乎能够让我得到一个日期作为字符串值(并且采用我想要的正确格式:
if let timestamp = data["date"] as? Timestamp {
let date = timestamp.dateValue()
dateFormatter.dateStyle = .medium
dateFormatter.timeStyle = .none
strDate = "\(dateFormatter.string(from: date))"
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.