尝试在Flutter中将Firestore时间戳转换为DateTime时,我总是遇到错误,尝试了所有解决方案,但均无效(上次尝试How to print Firestore timestamp as formatted date and time)
下面是我的代码;
- 代码**
factory UserModel.fromMap(Map<String, dynamic> map) {
return UserModel(
name: map['name'],
email: map['email'],
username: map['username'],
registerDate:
DateTime.fromMillisecondsSinceEpoch(map['registerDate'] * 1000),
id: map['id'],
imageUrl: map['imageUrl'],
cvUrl: map['cvUrl'],
phoneNumber: map['phoneNumber'],
education: Education.fromMap(map['education']),
location: Location.fromMap(map['location']),
lookingForIntern: map['lookingForIntern'],
);
}
- 错误**
'Timestamp' has no instance method '*'.
Receiver: Instance of 'Timestamp'
已将日期时间转换为时间戳,并已更改
registerDate:
DateTime.fromMillisecondsSinceEpoch(map['registerDate'] * 1000),
到
registerDate:map['registerDate']
现在得到下面的错误;
Converting object to an encodable object failed: Instance of 'Timestamp'
但是print(map['registerDate'])
打印Timestamp(seconds=1632412800, nanoseconds=0)
4条答案
按热度按时间mgdq6dx11#
试试这个软件包来处理这个问题-
https://pub.dev/packages/date_format
2eafrhcq2#
我有一个firebase函数,它在字段
dueDateLatestRental
中返回一个时间戳(admin.firestore.Timestamp
):在我的flutter代码中,我这样解析时间戳:
我认为将其 Package 在
try/catch
中会更安全,因为随着时间的推移,有许多方法可以阻止它(例如,我更改数据库结构中的某些内容)这是生成的警报对话框:
91zkwejq3#
根据不同的场景,可以采用不同的方法来实现这一点,请查看以下哪段代码适合您的场景。
1.
1.在dart文件中添加以下函数。
就叫它
formatTimestamp(map['registerDate'])
sqyvllje4#