Передайте и отфильтруйте элементы по метке времени в Firestore для Swift - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь пропустить сегодняшнюю дату в Firestore Timestamp в моем приложении.Я получаю сегодняшнюю дату следующим образом:

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"

Я должен пропустить сегодняшнюю дату с утра 7 утра до 23:00 вечера, и я сохранил эти даты в startDate и endDate.Теперь я передаю эти временные параметры в запросе Firestore следующим образом: -

self.db.collection("Locations").whereField("userid", isEqualTo: "\(selectedUserID)").whereField("createddatetime", isGreaterThanOrEqualTo: "\(startDate)").whereField("createddatetime", isLessThanOrEqualTo: "\(endDate)").getDocuments()

, но в моем снимке я не получаю результатов.Как я могу это сделать.Пожалуйста, помогите?

enter image description here

1 Ответ

0 голосов
/ 31 января 2019

Вам необходимо:

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)

3) Изменить функцию на:

self.db.collection("Locations")
        .whereField("userid", isEqualTo: "\(selectedUserID)")
        .whereField("createddatetime", isGreaterThanOrEqualTo: startTimestamp)
        .whereField("createddatetime", isLessThanOrEqualTo: endTimestamp)
        .getDocuments() { (snapshot, error) in

        ...

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...