如何使用flutter将Firebase中的Timestamp转换为DateTime

ubbxdtey  于 2022-11-25  发布在  Flutter
关注(0)|答案(3)|浏览(151)

我在firebase中有一个时间戳项。我从dart代码时间戳类型中得到了这个项。它显示为“时间戳(秒=1590903768,纳秒=26999000)”。
我希望在我的申请中仅显示日期,如“2020-06-01”或“06- 01”。
请给我指点。

bvk5enib

bvk5enib1#

Timestamp类有一个toDate函数,可以将其转换为DateTime对象。有关详细信息,请参阅this。现在,使用intl包格式化程序可以更轻松地将其转换为字符串。
示例:

Timestamp stamp = Timestamp.now();
DateTime date = stamp.toDate();
jq6vz3qz

jq6vz3qz2#

您可以将Timestamp DataType转换为DateTime,然后根据需要设置DateTime的格式。
注意:您必须在flutter项目中安装intl package才能使此代码正常工作。

示例

在dart文件中添加以下方法。

String formatTimestamp(Timestamp timestamp) {
  var format = new DateFormat('y-M-d'); // <- use skeleton here
  return format.format(timestamp.toDate());
}

然后从FireStore获取TimeStamp并将其传递给此方法

print(formatTimestamp(doc.data['timestamp']));

输出

year-month-day

对于其他可用格式,请使用“ backbone ”进行格式化。

ICU Name                   Skeleton
 --------                   --------
 DAY                          d
 ABBR_WEEKDAY                 E
 WEEKDAY                      EEEE
 ABBR_STANDALONE_MONTH        LLL
 STANDALONE_MONTH             LLLL
 NUM_MONTH                    M
 NUM_MONTH_DAY                Md
 NUM_MONTH_WEEKDAY_DAY        MEd
 ABBR_MONTH                   MMM
 ABBR_MONTH_DAY               MMMd
 ABBR_MONTH_WEEKDAY_DAY       MMMEd
 MONTH                        MMMM
 MONTH_DAY                    MMMMd
 MONTH_WEEKDAY_DAY            MMMMEEEEd
 ABBR_QUARTER                 QQQ
 QUARTER                      QQQQ
 YEAR                         y
 YEAR_NUM_MONTH               yM
 YEAR_NUM_MONTH_DAY           yMd
 YEAR_NUM_MONTH_WEEKDAY_DAY   yMEd
 YEAR_ABBR_MONTH              yMMM
 YEAR_ABBR_MONTH_DAY          yMMMd
 YEAR_ABBR_MONTH_WEEKDAY_DAY  yMMMEd
 YEAR_MONTH                   yMMMM
 YEAR_MONTH_DAY               yMMMMd
 YEAR_MONTH_WEEKDAY_DAY       yMMMMEEEEd
 YEAR_ABBR_QUARTER            yQQQ
 YEAR_QUARTER                 yQQQQ
 HOUR24                       H
 HOUR24_MINUTE                Hm
 HOUR24_MINUTE_SECOND         Hms
 HOUR                         j
 HOUR_MINUTE                  jm
 HOUR_MINUTE_SECOND           jms
 MINUTE                       m
 MINUTE_SECOND                ms
 SECOND                       s

我希望这会有帮助!!

np8igboo

np8igboo3#

您从firestore取回一个Map。假设您已经将其命名为“creationDate”,您可以使用toDate()dart函数将返回的时间戳转换为DateTime对象。

// 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);

相关问题