time - 如何将 Firestore 时间戳打印为格式化的日期和时间
问题描述
我的时间戳Timestamp(seconds=1560523991, nanoseconds=286000000)
在 Flutter Firestore 快照中返回。
我想将其打印为格式正确的日期和时间。
我DateTime.now()
在创建新记录并使用 Firestore 快照检索它时将当前 DateTime 存储在 Firestore 中,但我无法转换为格式化的日期时间。我正在使用 libintl.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())]);
....
抛出的错误是
日期格式无效。
我期待输出是:'Jan 17, 2019, 2:19 PM'
解决方案
当我们将DateTime对象推送到 Firestore 时,它会在内部将其转换为自己的时间戳对象并存储它。
从 Firestore 获取时间戳后将其转换回 Datetime 的方法:
Firestore 的时间戳包含一个名为toDate()的方法,该方法可以转换为 String,然后可以将该 String 传递给DateTime的parse方法以转换回DateTime
DateTime.parse(timestamp.toDate().toString())
推荐阅读
- python - 测试 SqlAlchemy 列类型
- c# - 开始游戏时,Unity3D 值从自定义编辑器中消失
- android-studio - 您的 android sdk 丢失损坏?
- wso2 - 完全分布式的 wso2 cep 部署是否因 4.2.0 而异
- python - 将双 groupby 对象转换为数据框
- node.js - 错误:找不到模块“togeojson”
- angular - Angular 2 - 订阅问题,不显示输出
- asp.net-core - 用于 asp.net 核心 MVC 的 Google OAuth 2.0
- node.js - fs-extra:复制文件而不覆盖
- service-worker - Service Worker w offline.html 备份页面