[英]How to convert Timestamp to DateTime from firebase with flutter
我在 firebase 中有时间戳项目。我从 dart 代码时间戳类型中获取该项目。 它显示为“Timestamp(seconds=1590903768, nanoseconds=26999000)”。
我想在我的申请中显示日期,例如“2020-06-01”或“06-01”。
请给我建议。
Timestamp
class 有一个toDate
function 将其转换为一个DateTime
object。 有关更多信息,请参阅此。 现在,使用intl
package 格式化程序可以更轻松地完成将其转换为字符串的任何格式化。
例子:
Timestamp stamp = Timestamp.now();
DateTime date = stamp.toDate();
您从 Firestore 取回 map。 假设您将其命名为“creationDate”,您可以使用 toDate() dart function 将返回的时间戳转换为 DateTime object。 格式化日期时间的“最简单”方法是使用intl package
// Map From firestore
Map data = documentSnapshot.data();
var creationDate = data['creationDate'].toDate();
//Format using intl package
DateFormat _dateFormat = DateFormat('y-MM-d');
String formattedDate = _dateFormat.format(dateTime);
您可以将Timestamp
DataType 转换为DateTime
,然后根据您的要求格式化 DateTime。
例子
在您的 dart 文件中添加以下方法。
String formatTimestamp(Timestamp timestamp) {
var format = new DateFormat('y-MM-d'); // 'hh:mm' for hour & min
return format.format(timestamp.toDate());
}
然后从 FireStore 获取时间戳并将其传递给此方法
print(formatTimestamp(doc.data['timestamp']));
OutPut
2021/01/11
我希望这会有所帮助!
如果您想要时间戳中的小时和分钟 (hh:mm) ,只需创建以下方法,它会为您提供字符串作为回报。
String convertTimestampToHm(Timestamp timestamp) {
var format = DateFormat('Hm'); // convert into hours and minutes
return format.format(timestamp.toDate());
}
注意: - 您始终可以根据 requiremrnt 使用骨架。
将TimeStamp to DateTime
的方法因场景而异。 我已经总结了所有可能的方法,选择适合您情况的方法!
Firebase timestamp
转换为DateTime
: document['timeStamp'].toDate()
(document["timeStamp"] as Timestamp).toDate()
DateTime.fromMillisecondsSinceEpoch(document['timeStamp'].millisecondsSinceEpoch);
Timestamp.fromMillisecondsSinceEpoch(document['timeStamp'].millisecondsSinceEpoch).toDate();
如果timeStamp
以microseconds
为单位,请使用:
DateTime.fromMicrosecondsSinceEpoch(timestamp * 1000000);
如果timeStamp
以milliseconds
,请使用:
DateTime.fromMillisecondsSinceEpoch(timestamp * 1000);
在您的 dart 文件中添加以下 function。
String formatTimestamp(Timestamp timestamp) { var format = new DateFormat('yyyy-MM-dd'); // <- use skeleton here return format.format(timestamp.toDate()); }
将其称为formatTimestamp(document['timestamp'])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.