将地图毫秒,自切换,以及飞镖中的DateTime转换为

时间:2016-09-22 23:10:26

标签: json datetime angular firebase dart

我在firebase json中将DateTime存储为millisecondsSinceEpoch,然后在调用fromMap时我想从millisecondsSinceEpoch转换。

除了我目前之外,哪种方式最合适?

new DateTime.fromMillisecondsSinceEpoch(map['created_at'])

邮件类

class Message {
  final String name;
  final String text;
  String photoURL;
  String imageURL;
  DateTime created_at;

  Message(this.name, this.created_at, [this.text, String photoURL, this.imageURL]) {
    this.photoURL = photoURL ??
        "https://lh3.googleusercontent.com/"
  }


  Message.fromMap(Map map) :
        this(map['name'], new DateTime.fromMillisecondsSinceEpoch(map['created_at']),  map['text'], map['photoURL'], map['imageURL']);


  Map toMap() =>
      {
        "name": name,
        "created_at": created_at.millisecondsSinceEpoch,
        "text": text,
        "photoURL": photoURL,
        "imageURL": imageURL
      };
}

1 个答案:

答案 0 :(得分:1)

你的代码对我来说很好。

我能用当前代码看到的唯一潜在问题是它在本地时区创建了DateTime对象。如果您想将它作为时间戳,您可能希望始终使用UTC时间,因此您可能需要:

new DateTime.fromMillisecondsSinceEpoch(map['created_at'], isUtc: true)

然后,如果日期显示给用户,使用当地时间很可能是正确的事情。

另一个潜在的问题是地图可能包含字符串而不是数字,但您的示例中有一个数字,因此可能不是问题。只需确保您知道JSON包含的内容。

(但是对于挑剔,created_at成员通常会在Dart中写成createdAt