Код: Выделить всё
// The date is created for midnight (00:00) and has been created from
// the Firebase Database web interface
let query = db.collection("myCollection")
.whereField("myDate", isEqualTo: Timestamp(date: myDate)
// I need to add a isGreaterThanOrEqualTo & isLessThan filter with a 1sec threshold to fetch the midnight date.
// When I query it (adding a time threshold filter) and convert it to a Date, it has nanoseconds
query.snapshots().map { snapshot in
if let document = snapshot.documents.first {
let date = try document.data(as: Date.self)
}
}
Код: Выделить всё
2025-10-12 22:00:00 +0000
timeIntervalSinceReferenceDate: 781999200
Код: Выделить всё
2025-10-12 22:00:00 +0000
timeIntervalSinceReferenceDate: 781999200.1029999
Примечания:
- Я использовал консоль Firebase, чтобы установить дату с помощью их календарного компонента.
- Дата хранится в Firebase как тип Timestamp.
- Я декодирую его с помощью Date в Swift (через Codable или ручное декодирование).
- Похоже, что преобразование часового пояса не требуется — обе стороны указаны в формате UTC.
- Я использую Firebase Timestamp для запроса документа
Это связано с потерей точности, различиями в формате кодирования или чем-то в том, как Firebase сериализует временные метки?
И существует ли рекомендуемый способ гарантировать, что декодированная дата точно соответствует исходной временной метке (без этих 0,1 с) смещение)?
Подробнее здесь: https://stackoverflow.com/questions/797 ... t-in-swift
Мобильная версия