#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().