如何使用颤振将时间戳从 Firebase 转换为 DateTime
Posted
技术标签:
【中文标题】如何使用颤振将时间戳从 Firebase 转换为 DateTime【英文标题】:How to convert Timestamp to DateTime from firebase with flutter 【发布时间】:2020-09-19 08:45:36 【问题描述】:我在 Firebase 中有时间戳项目。我从飞镖代码时间戳类型中获取项目。 它显示为“时间戳(秒=1590903768,纳秒=26999000)”。
我想仅在我的申请中显示日期,例如“2020-06-01”或“06-01”。
请给我建议。
【问题讨论】:
我不是飞镖专家,但这有帮助吗? ***.com/questions/16126579/… 这个页面应该有帮助:***.com/questions/52996707/… ***.com/questions/50632217/… 【参考方案1】:您可以将Timestamp
DataType 转换为DateTime
,然后根据您的要求格式化 DateTime。
示例
在您的 dart 文件中添加以下方法。
String formatTimestamp(Timestamp timestamp)
var format = new DateFormat('y-MM-d'); // <- use skeleton here
return format.format(timestamp.toDate());
然后从 FireStore 中获取 TimeStamp 并将其传递给此方法
print(formatTimestamp(doc.data['timestamp']));
输出
2021/01/11
其他可用格式,请使用 Skeleton 格式化。
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
我希望这会有所帮助!
【讨论】:
保存在 Firestore 上的实际时间戳是 13-Nov-21,但使用此代码后,显示的日期是 13-10-21(13-Oct-21)。如何解决这个问题..?? @Madhav 请从 Firebase 控制台检查您的 Firestore 数据库并验证一次日期,因为此代码将 TimeStamp 转换为 DateTime 并且只是格式化,它工作正常。如果您仍然对此代码有疑问,请创建新问题,提供有关您的代码的更多信息并在此处分享链接,以便我为您提供帮助! 我得到了答案,DateFormat('d-MM-y')
将显示 11 月为 10,而 Jan 显示为 0,因为计数从 0 开始。所以,我改用 DateFormat('d-MMM-y')
,它显示 13-Nov- 21,而不是 13-10-21。
@Madhav 谢谢Madhav,我也不知道这个日期计数系统。【参考方案2】:
你从 firestore 取回了一张地图。假设您已将其命名为“creationDate”,您可以使用 toDate() 飞镖函数将返回的时间戳转换为 DateTime 对象。格式化日期时间的“最简单”方法是使用 intl 包
// 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);
【讨论】:
【参考方案3】:Timestamp
类有一个 toDate
函数,可将其转换为 DateTime
对象。请参阅this 了解更多信息。现在,使用 intl
包格式化程序可以更轻松地完成将其转换为字符串时想要进行的任何格式化。
例子:
Timestamp stamp = Timestamp.now();
DateTime date = stamp.toDate();
【讨论】:
以上是关于如何使用颤振将时间戳从 Firebase 转换为 DateTime的主要内容,如果未能解决你的问题,请参考以下文章
Python:如何将日期时间/时间戳从一个时区转换为另一个时区?
使用 sql 查询将元数据库中的预配置时间戳从 utc 格式转换为 ist
Qt 时间戳从 Epoch(1970) 到 2000 年开始的 Postgresql 时间戳。如何添加偏移量并将毫秒转换为微秒?