我在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
};
}
答案 0 :(得分:1)
你的代码对我来说很好。
我能用当前代码看到的唯一潜在问题是它在本地时区创建了DateTime
对象。如果您想将它作为时间戳,您可能希望始终使用UTC时间,因此您可能需要:
new DateTime.fromMillisecondsSinceEpoch(map['created_at'], isUtc: true)
然后,如果日期显示给用户,使用当地时间很可能是正确的事情。
另一个潜在的问题是地图可能包含字符串而不是数字,但您的示例中有一个数字,因此可能不是问题。只需确保您知道JSON包含的内容。
(但是对于挑剔,created_at
成员通常会在Dart中写成createdAt
。