Почему декодированная дата из Firebase имеет небольшое смещение в миллисекундах в Swift?IOS

Программируем под IOS
Ответить
Anonymous
 Почему декодированная дата из Firebase имеет небольшое смещение в миллисекундах в Swift?

Сообщение Anonymous »

Я получаю дату, хранящуюся в Firebase (метаданные Firestore или Storage), и декодирую ее в Swift, но заметил, что полученное значение не совсем то, что я ожидал.

Код: Выделить всё

 let query = db.collection("myCollection")
.whereField("myDate", isEqualTo: Timestamp(date: myDate)
Например, ожидаемая дата соответствует:

Код: Выделить всё

2025-10-12 22:00:00 +0000
timeIntervalSinceReferenceDate: 781999200
Однако, когда я извлекаю (используя другой фильтр) и декодирую дату в Swift, я получаю что-то вроде:

Код: Выделить всё

2025-10-12 22:00:00 +0000
timeIntervalSinceReferenceDate: 781999200.1029999
Между сохраненным и декодированным значением всегда существует небольшая разница в миллисекундах (около 0,1 секунды), поэтому получить эту дату из базы данных невозможно.
Примечания:
  • Я использовал консоль Firebase, чтобы установить дату с помощью их календарного компонента.
  • Дата хранится в Firebase как тип Timestamp.
  • Я декодирую его с помощью Date в Swift (через Codable или ручное декодирование).
  • Похоже, что преобразование часового пояса не требуется — обе стороны указаны в формате UTC.
  • Я использую Firebase Timestamp для запроса документа
Почему при декодировании временной метки Firebase в Swift Date появляется это небольшое смещение с плавающей запятой?
Это связано с потерей точности, различиями в формате кодирования или чем-то в том, как Firebase сериализует временные метки?
И существует ли рекомендуемый способ гарантировать, что декодированная дата точно соответствует исходной временной метке (без этих 0,1 с) смещение)?

Подробнее здесь: https://stackoverflow.com/questions/797 ... t-in-swift
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»