Firebase 如何通过与Flatter cloud firestore插件中的日期进行比较来获取记录?

Firebase 如何通过与Flatter cloud firestore插件中的日期进行比较来获取记录?,firebase,dart,google-cloud-firestore,flutter,Firebase,Dart,Google Cloud Firestore,Flutter,我正在使用firebase cloud firestore来存储我的所有文档。我的文档有一个格式如下的startDateTime字段 我想获取startDateTime大于或等于当前日期的所有记录。这是我的颤振代码来做这件事 Firestore.instance.collection("trips") .where("trip.createdByUID", isEqualTo: this.userDetails['id']) .where("trip.startDateTime

我正在使用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()}" ));
    })
但这是行不通的。无法理解如何使用
比使用或等于
更好,这样它才能正常工作

需要一些指导。

仅通过此查询

.where(“trip.startDateTime”,大于或等于:new DateTime.now())

由于firebase自动将dart
DateTime
对象转换为Timestamp firebase对象。保存对象时也需要执行同样的操作

您可以在右侧看到对象类型是否为timestamp

如果这不起作用,您可以在创建时以数字格式保存另一个对象。那么比较起来就容易了。您可以按如下方式获取数字日期时间:


new DateTime.now().millissecondssinceepoch
我在iOS上使用了它。请检查下面的代码

DateTime _now = DateTime.now();

return StreamBuilder<QuerySnapshot>(
  stream: _store
      .collection('rides')
      .orderBy('rideDate')
      .orderBy('rideType')
      .where('rideDate', isGreaterThan: _now)
      .snapshots(),
DateTime\u now=DateTime.now();
返回流生成器(
流:\ u存储
.collection('rides')
.orderBy('rideDate'))
.orderBy('rideType'))
.where('rideDate',大于:_now)
.snapshots(),

哦,天哪,好像我的大脑不在我身边。事实上,我尝试了新的日期时间。现在()
但这也不起作用&愚蠢的问题是……我的firebase中没有任何文档的
startDateTime
时间高于今天的日期。无论如何,谢谢你的回复。它在android上有效,但在ios上无效。请帮帮忙。@tree你在ios上得到了什么?