我正在将Node js服务器中的时间戳记保存到Firestore数据库中, 由于某种原因,它将Date()保存为数据库中的字符串。
我正在尝试将文档加载到IOS应用程序中,但是我找不到一种方法来转换JS保存的字符串以快速处理所有我尝试过的解决方案,导致该应用程序崩溃,因为转换。
这是我的代码
func convertStringToDate(date:String) -> Date{
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm'"
let returnValue = dateFormatter.date(from: date)
return returnValue!
}
我从Firestore收到的 date值是:
date String "Fri Aug 03 2018 22:43:00 GMT+0300 (IDT)"
答案 0 :(得分:3)
您可以只从Firestore保存时间戳serverValue。它以Unix时间为您提供了TIMESTAMP,这是一个您可以迅速转换为人类时间的数字。
在您的节点服务器中
const timestamp = firebase.firestore.FieldValue.serverTimestamp()
ref.update({ updatedAt: timestamp })
在Swift中
let date = Date(timeIntervalSince1970: YOUR_TIMESTAMP_HERE_AS_VAR)
答案 1 :(得分:1)
您可以像这样转换日期:
var dateStr = "Fri Aug 03 2018 22:43:00 GMT+0300 (IDT)"
guard let ind = dateStr.index(of: "G") else {return}
dateStr = String(dateStr[..<ind].trimmingCharacters(in: CharacterSet.whitespaces))
print(convertStringToDate(date: dateStr))
func convertStringToDate(date:String) -> Date{
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEE MMM dd yyyy HH:mm:ss"
let returnValue = dateFormatter.date(from: date)
let timeZone = TimeZone.current
return returnValue!.addingTimeInterval(TimeInterval(timeZone.secondsFromGMT()))
}