如何在 Flutter 中读取 Firestore 时间戳

ana*_*man 7 timestamp flutter

如何将 firestore 时间戳更改为“2 天前或 1 小时前”之类的内容?我尝试直接显示它,但出来的数据是像Timestamp(seconds=1556459022, nanosecond=0).

怎么做?

Edm*_*man 16

Firestore 的时间戳有一个toDate()返回 dartDateTime对象的方法。

从中您可以使用常规的 dart 解决方案,例如DateFormattimeago库将其显示为:

timeago.format(firestoreTimestamp.toDate());
Run Code Online (Sandbox Code Playgroud)

  • @anangfaturrohman 来自文档快照,您需要访问其“数据”映射。在地图内,您应该在相应字段名称下找到时间戳,例如`documentSnapshot.data['FIELD_NAME_HERE']`。 (2认同)

Ron*_*Ron 6

我就是这样解决的。导入以下包:

import 'package:timeago/timeago.dart' as timeago;
Run Code Online (Sandbox Code Playgroud)

现在,从 Firestore 获取时间戳。例如,对于字段名称'timestamp',请参考以下代码:

final document = Firestore.instance.collection("yourCollectionName").snapshots();
Run Code Online (Sandbox Code Playgroud)

现在使用以下方法访问您的时间戳:

`Timestamp timestamp = document['timestamp'];
Run Code Online (Sandbox Code Playgroud)

最后,在应用程序中显示结果。例子:

Text(timeago.format(DateTime.tryParse(timestamp.toDate().toString())).toString());
Run Code Online (Sandbox Code Playgroud)