当前位置: 首页 > 知识库问答 >
问题:

如何将 Firestore 时间戳打印为格式化的日期和时间

毛景曜
2023-03-14

我的时间戳在Flatter Firestore快照中返回<code>时间戳(秒=1560523991,纳秒=286000000)。

我想把它打印成格式正确的日期和时间。

我正在使用DateTime.now()将当前DateTime存储在Firestore中,同时创建新记录并使用Firestore快照检索它,但我无法转换为格式化的日期时间。我正在使用lib intl.dart进行格式化。

保存数据的代码

       d={'amount':amount,
      'desc':desc,
      'user_id':user_id,
      'flie_ref':url.toString(),
      'date':'${user_id}${DateTime.now().day}-${DateTime.now().month}-${DateTime.now().year}',
      'timestamp':DateTime.now()
return Firestore.instance.collection('/data').add(d).then((v){return true;
    }).catchError((onError)=>print(onError));
    });

Accessing with 

    FutureBuilder(
                  future: Firestore.instance
                      .collection('data')
                      .where('user_id', isEqualTo:_user_id)
                      .getDocuments(),
                  builder: (BuildContext context,
                      AsyncSnapshot<QuerySnapshot> snapshot) {
                    if (!snapshot.hasData)
                      return Container(
                          child: Center(child: CircularProgressIndicator()));
                    return ListView.builder(
                        itemCount: snapshot.data.documents.length,
                        itemBuilder: (BuildContext context, int index) {
                          return Column(
                            children: <Widget>[
       Text(DateFormat.yMMMd().add_jm().format(DateTime.parse(snapshot.data.documents[index].data['timestamp'].toString())]);


....

抛出的错误是

日期格式无效。

我希望输出是:<code>‘2019年1月17日下午2:19‘

共有3个答案

姚新霁
2023-03-14

您可以直接将 Firestore 时间戳对象转换为 DateTime,如下所示:

DateTime myDateTime = (snapshot.data.documents[index].data['timestamp']).toDate();

这将以dart的DateTime格式返回您的FiRecovery时间戳。为了转换您的DateTime对象,您可以使用intl包中的DateFormat类。您可以使用获得的DateTime对象来获取您选择的格式,如下所示:

DateFormat.yMMMd().add_jm().format(myDateTime);

此代码生成如下输出:

Apr 21, 2020 5:33 PM
司马彦
2023-03-14

这是方式!

Firestore将返回类似时间戳的时间戳(秒=1560523991,纳秒=286000000)。

这可以被解析为

Timestamp t = document['timeFieldName'];
DateTime d = t.toDate();
print(d.toString()); //2019-12-28 18:48:48.364
朱俭
2023-03-14

当我们将DateTime对象推送到Firestore时,它会在内部将其转换为自己的时间戳对象并存储。

从 Firestore 获取时间戳后将其转换回日期时间的方法:

FiRecovery的时间戳包含一个名为toDate()的方法,可以将其转换为String,然后可以将该String传递给DateTime的解析方法以转换回DateTime

DateTime.parse(timestamp.toDate().toString())
 类似资料:
  • 问题内容: 我有,我需要将其转换为应匹配此模式的类型对象-“ 2016-11-16T18:42:33.049Z”。我怎样才能做到这一点? 问题答案: Date d = new Date((long)timestamp*1000); 将创建一个实例。稍后显示它是另一回事。 我认为这就是您想要的: 测试:

  • 我已经尝试从firebase时间戳中获取日期和时间,如下所示: 但我得到的结果是:

  • 问题内容: 使用PHP,我想将UNIX时间戳转换为类似于以下内容的日期字符串: 如何转换的时间戳,如到? 问题答案: 尝试这样:

  • 本文向大家介绍vue.js将时间戳转化为日期格式的实现代码,包括了vue.js将时间戳转化为日期格式的实现代码的使用技巧和注意事项,需要的朋友参考一下 看看下面的代码吧,具体代码如下所示:  把上面代码保存为date.js放到你的公共js文件夹中。 在你的需要格式化时间戳的组件里像下面这样使用: 总结 以上所述是小编给大家介绍的vue.js将时间戳转化为日期格式的实现代码,希望对大家有所帮助,如果

  • 我有一个方法可以生成一个随机的日期和时间。 打印输出类似于 我见过几个这样的问题和页面,但他们没有给我一个线索。

  • 问题内容: 我有一个日期保存在Firestore字段中作为时间戳,我想将其转换为Swift中的日期: 我尝试了以下操作,但出现错误: 错误: 我想转换为Date的原因是为了可以使用此Date扩展名模仿您在Instagram帖子上看到的时间戳: 问题答案: 可以这样做: 或者你可以这样做: 请参阅时间戳参考文档。