繁体   English   中英

如何将时间戳从 firebase 转换为 DateTime 和 flutter

[英]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

  1.  document['timeStamp'].toDate()
  2.  (document["timeStamp"] as Timestamp).toDate()
  3.  DateTime.fromMillisecondsSinceEpoch(document['timeStamp'].millisecondsSinceEpoch);
  4.  Timestamp.fromMillisecondsSinceEpoch(document['timeStamp'].millisecondsSinceEpoch).toDate();
  5. 如果timeStampmicroseconds为单位,请使用:

     DateTime.fromMicrosecondsSinceEpoch(timestamp * 1000000);
  6. 如果timeStampmilliseconds ,请使用:

     DateTime.fromMillisecondsSinceEpoch(timestamp * 1000);
  7. 在您的 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM