Каким — то образом DateTime.now() в миллисекундах получает дополнительные десятичные точки после отправки и получения ответа от удаленной базы данных-Dart/Flutter

#flutter #datetime #dart #parse-platform

Вопрос:

Я сохраняю объект «Книга» в базе данных улья, это выглядит так:

 title: Creation of Dreams
author: Kosmas Brink
publishingDate: 1998-11-02 00:00:00.000
dateAdded: 2021-06-22 19:39:48.847
lastModified: 2021-06-22 19:39:48.847
 

dateAdded и LastModified-это и дата, и время.сейчас()

проблема

Сериализуемый Json каким-то образом изменяет мою функцию DateTime.now (). Это вызывает ошибки, когда я пытаюсь сравнить объекты в локальной БД с удаленной БД, конечно, одни и те же объекты не совсем одинаковы из-за этого, и я получаю ошибку. Это выглядит так на удаленной базе данных и при возврате из удаленной базы данных:

 {
    "title": "Creation of Dreams",
    "author": "Kosmas Brink",
    "publishingDate": "1998-11-02 00:00:00.000",
    "dateAdded": "2021-06-22 19:39:48.847716",
    "lastModified": "2021-06-22 19:39:48.847717"
  }
 

Мой файл сериализатора json преобразует дату и время в строку(). Вместо toIso8601String(). Поэтому я понятия не имею, почему это происходит.

Вопрос:

  • Итак, почему я получаю дополнительную точность в миллисекундах случайным образом?
  • Что еще более важно, есть ли лучший способ, например, использовать миллисекунды от точки или что-то в этом роде?

ИЗМЕНИТЬ: Добавление сериализатора

 // **************************************************************************
// JsonSerializableGenerator
// **************************************************************************

Book _$BookFromJson(Map<String, dynamic> json) {
  return Book(
    title: json['title'] as String,
    author: json['author'] as String,
    publishingDate: DateTime.parse(json['publishingDate'] as String),
    dateAdded: DateTime.parse(json['dateAdded'] as String),
    lastModified: DateTime.parse(json['lastModified'] as String),
  );
}

Map<String, dynamic> _$BookToJson(Book instance) => <String, dynamic>{
      'title': instance.title,
      'author': instance.author,
      'publishingDate': instance.publishingDate.toString(),
      'dateAdded': instance.dateAdded.toString(),
      'lastModified': instance.lastModified.toString(),
    };
 

Комментарии:

1. 48.847716 и 48.847717 являются микросекундным приложением. Например, время, необходимое для перехода от одного поля к другому. Похоже, что второй дисплей более точен, чем первый, который может учитывать только миллисекунды? (отказ от ответственности: я не знаю, какие инструменты вы используете)

2. Можете ли вы поделиться частью сериализации?

3. Добавлена сериализация. @Breakingnotsobad я не знаю, какое это имеет отношение к моему вопросу. Сохранение моего объекта сохраняется .847 , а объект json сохраняется .847717

4. @JigarPatel исходный код gen был . toIso8601String (), но я изменил его на . toString(). Это изначально решило ту самую проблему, с которой я сейчас сталкиваюсь. Но затем я перезапустил все свои базы данных, чтобы повторно протестировать свой проект, и теперь у меня снова та же проблема с использованием . toString().