firebase - Flutter Cloud Firestore 将 serverTimestamp 转换为字符串

标签 firebase flutter google-cloud-firestore timestamp

我的 flutter 应用程序需要获取当前时间,我已经为此尝试了几个包,例如:truetime、ntptime、datetime 的 datetime、cloud firestore 的 Timestamp.now 在手机设置中切换时区时,它们都返回不同的时间.为所有时区的所有设备返回相同时间的唯一方法是 FieldValue.serverTimestamp() 方法,我将此值保存到 firestore 文档中,并在那里将其识别为时间戳类型的字段。

我想把它转换成一个字符串,这样我就可以得到一个像这样的字符串:“年-月-日小时:分钟:秒”

我尝试过的:

(1)

final now = FieldValue.serverTimestamp();

saving this now variable into a document ...,文档字段如下所示:

时间戳:日.月年时:分:秒 UTC+2(时间戳)

然后我从字段“timestamp”中获取这个值并将其分配给文本小部件:

Text(doc.data["timestamp"].toString())

文本小部件如下所示:

时间戳(秒=1568560057,纳秒=790000000)

它应该喜欢什么(如前所述):

“年-月-日时:分:秒”

(2)

final now = FieldValue.serverTimestamp().toString();

saving this now variable into a document ...,文档字段如下所示:

时间戳:“'FieldValue' 的实例”(字符串)

然后我从字段“timestamp”中获取这个值并将其分配给文本小部件:

Text(doc.data["timestamp"].toString())

文本小部件如下所示:

“FieldValue”的实例

它应该喜欢什么(如前所述):

“年-月-日时:分:秒”


所以有人知道我如何获得我需要的字符串格式,或者可能是另一种方法,它为所有设备和时区返回相同的时间,并且可以转换成我需要的格式的字符串?

提前致谢!


解决方案: 感谢FrankCopsOnRoad

我们必须将此值保存到文档字段中:

final now = FieldValue.serverTimestamp();

这将在文档字段中保存为时间戳对象。

现在我们需要将它转换为 DateTime 对象,以便在文本小部件中使用它,然后将其转换为字符串以获得格式:

Text(doc.data["timestamp"].toDate().toString())

文本小部件如下所示:

年-月-日时:分:秒

已解决。

最佳答案

当您从 Cloud Firestore 中的文档读取时间戳时,您会得到一个 Timestamp object .

要将其转换为常规日期对象,您可以调用 toDate() method在上面。

然后您可以按照您通常使用的任何方式格式化该 Date 对象,例如与 DateFormat class如图Date Time format in Flutter dd/MM/YYYY hh:mm

关于firebase - Flutter Cloud Firestore 将 serverTimestamp 转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57945683/

相关文章:

ios - 获取单个数组项

javascript - 如何确保所有数据按顺序写入 Firestore?

android - 我应该在 ActionCodeSettings.Builder.setAndroidPackageName() 中至少使用什么版本号?

java - 如何返回 DocumentSnapShot 作为方法的结果?

json - 如何在 flutter 中解析2D列表的json

flutter - flutter 中的盒子阴影没有出现

javascript - 使用规则禁用 Firebase Cloud Firestore 中的查询集合

javascript - 将字段属性添加到 firebase 中的文档

swift - 使用 Swift 闭包和 Firebase 处理异步数据

flutter - 将 onSaved 传递给 TextFormField 小部件?