Win*_*ngs 4 ios firebase swift google-cloud-firestore
我试图Timestamp在我的应用程序中通过 Firestore中的今天日期。我得到今天的日期是这样的
formatter.dateFormat = "MMMM d, yyyy"
let result = formatter.string(from: date)
print("Today date is \(result)")
let startDate = result + " " + "07:00:00"
let endDate = result + " " + "23:00:00"
Run Code Online (Sandbox Code Playgroud)
我必须从早上 7 点到下午 23:00 传递今天的日期,并将这些日期存储在startDate和 中endDate。现在我在这样的Firestore查询中传递这些时间:-
self.db.collection("Locations").whereField("userid", isEqualTo: "\(selectedUserID)").whereField("createddatetime", isGreaterThanOrEqualTo: "\(startDate)").whereField("createddatetime", isLessThanOrEqualTo: "\(endDate)").getDocuments()
Run Code Online (Sandbox Code Playgroud)
但我的快照没有得到任何结果。我怎样才能做到这一点。请帮忙?
你需要:
1) 转换字符串 -> 日期
2) 转换日期 -> 时间戳 (FIRTimestamp)
formatter.dateFormat = "MMMM d, yyyy HH:mm:ss"
let startTime: Date = formatter.date(from: startDate) ?? Date(timeIntervalSince1970: 0)
let startTimestamp: Timestamp = Timestamp(date: startTime)
let endTime: Date = formatter.date(from: endDate) ?? Date()
let endTimestamp: Timestamp = Timestamp(date: endTime)
Run Code Online (Sandbox Code Playgroud)
3) 将 func 更改为:
self.db.collection("Locations")
.whereField("userid", isEqualTo: "\(selectedUserID)")
.whereField("createddatetime", isGreaterThanOrEqualTo: startTimestamp)
.whereField("createddatetime", isLessThanOrEqualTo: endTimestamp)
.getDocuments() { (snapshot, error) in
...
}
Run Code Online (Sandbox Code Playgroud)