Code: Select all
// 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)
}
}
Code: Select all
2025-10-12 22:00:00 +0000
timeIntervalSinceReferenceDate: 781999200
Code: Select all
2025-10-12 22:00:00 +0000
timeIntervalSinceReferenceDate: 781999200.1029999
Hinweise:
- Ich habe die Firebase-Konsole verwendet, um das Datum mithilfe ihrer Kalenderkomponente festzulegen.
- Die Datum wird in Firebase als Zeitstempel-Typ gespeichert.
- Ich dekodiere es mit Date in Swift (über Codable oder manuelle Dekodierung).
- Es scheint keine Zeitzonenkonvertierung beteiligt zu sein – beide Seiten sind UTC.
- Ich verwende Firebase Timestamp, um das Dokument anzufordern
Liegt es an Präzisionsverlust, Unterschieden im Codierungsformat oder an etwas in der Art und Weise, wie Firebase Zeitstempel serialisiert?
Und – gibt es eine empfohlene Methode, um sicherzustellen, dass das dekodierte Datum genau mit dem ursprünglichen Zeitstempel übereinstimmt (ohne diese 0,1 Sekunden). Offset)?
Mobile version