首页 > 解决方案 > 不知何故 DateTime.now() 毫秒在发送到远程数据库并从远程数据库获得响应后获得额外的小数点 - Dart/Flutter

问题描述

我正在将“Book”对象保存到 Hive 数据库,它看起来像这样:

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 都是 DateTime.now()

问题

Json Serializable 正在以某种方式改变我的 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 序列化程序文件将 DateTime 转换为 String()。而不是 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(),
    };

标签: flutterdatetimedartparse-platform

解决方案


推荐阅读