Flutter Firebase:如何用条件语句比较两个Timestamp?
如何正确比较Firebase中的两个Timestamp
Dart的Firebase Timestamp类没有直接定义>=、<=这类比较运算符,所以直接使用会触发你遇到的报错。可以通过以下两种方式正确比较:
方法1:使用compareTo方法
Timestamp类提供了compareTo方法,返回值为整数:
- 返回0:两个时间戳相等
- 返回正数:当前
Timestamp对象大于被比较的对象 - 返回负数:当前
Timestamp对象小于被比较的对象
据此,判断dynamicTime >= staticTime的代码如下:
Timestamp? dynamicTime = snapshot.data?["Timestamp"]; Timestamp? staticTime = snapshot.data?["TimestampDeparture"]; // 先处理null安全,避免空指针 if (dynamicTime != null && staticTime != null) { if (dynamicTime.compareTo(staticTime) >= 0) { // 你的业务逻辑 } }
方法2:转换为DateTime后比较
调用Timestamp的toDate()方法可以将其转换为Dart原生的DateTime对象,而DateTime支持直接使用>=、<=等运算符:
Timestamp? dynamicTime = snapshot.data?["Timestamp"]; Timestamp? staticTime = snapshot.data?["TimestampDeparture"]; if (dynamicTime != null && staticTime != null) { DateTime dynamicDt = dynamicTime.toDate(); DateTime staticDt = staticTime.toDate(); if (dynamicDt >= staticDt) { // 你的业务逻辑 } }
内容的提问来源于stack exchange,提问作者Eben Oasis
相关产品推荐
相关产品推荐

