正在开发一个 flutter 应用程序,我使用 firebase cloud firestore 来存储我的所有文档。我的文档有一个 startDateTime 字段,其格式如下...
我想获取startDateTime大于或等于当前日期的所有记录。这是我执行此操作的颤振代码...
Firestore.instance.collection("trips")
.where("trip.createdByUID", isEqualTo: this.userDetails['id'])
.where("trip.startDateTime", isGreaterThanOrEqualTo: new DateTime.now().toString() )
.getDocuments().then((string) {
print('Firestore response111: , ${string.documents.length}');
string.documents.forEach((doc) => print("Firestore response222: ${doc.data.toString()}" ));
})
但这不起作用。无法理解如何使用
isGreaterThanOrEqualTo
才能正常工作。
需要一些指导。
您可以使用
DateTime()
: 按天或按小时等任何内容进行比较
final response = await FirebaseFirestore.instance
.collection('meetings')
.where(
'date',
isGreaterThanOrEqualTo: DateTime(selectedDay.year, selectedDay.month, selectedDay.day)
)
.get();
我已经在 iOS 上运行了。请检查下面的代码。
DateTime _now = DateTime.now();
return StreamBuilder<QuerySnapshot>(
stream: _store
.collection('rides')
.orderBy('rideDate')
.orderBy('rideType')
.where('rideDate', isGreaterThan: _now)
.snapshots(),
下面给出的答案很好,但问题是他们使用的是本地设备日期。根据您的应用程序,这可能是问题,也可能不是问题。要从 Firebase 端获取日期,您可以执行以下操作:
final docId = hourCollection.doc().id;
await hourCollection.doc(docId).set({'hour': FieldValue.serverTimestamp()});
final actualTimestampData = await hourCollection.doc(docId).get();
hourCollection.doc(docId).delete();
return actualTimestampData['hour'];