根据Google Firestore Swift提供的日期进行筛选

根据Google Firestore Swift提供的日期进行筛选,swift,firebase,google-cloud-firestore,filtering,querying,Swift,Firebase,Google Cloud Firestore,Filtering,Querying,目前,我正在将信息上传到Google Firestore,并将上传用户给出日期的信息。例如,在用户上传之前,他们通过UIDatePicker()选择一个日期。以以下格式输出日期:2018年1月19日 现在,当用户上载文档时,数据库中有一个字段设置为日期,该字段将填充2018年1月19日的 我的问题是如何有效地按日期顺序查询所有上传的列表,从顶部的最近日期开始,从底部的最近日期开始 我的最终目标是创建一个collection视图,它只包含所有日期的列表,从最近的日期开始 我不能根据用户上传的时间来

目前,我正在将信息上传到Google Firestore,并将上传用户给出日期的信息。例如,在用户上传之前,他们通过
UIDatePicker()
选择一个日期。以以下格式输出日期:
2018年1月19日

现在,当用户上载文档时,数据库中有一个字段设置为
日期
,该字段将填充2018年1月19日的

我的问题是如何有效地按日期顺序查询所有上传的列表,从顶部的最近日期开始,从底部的最近日期开始

我的最终目标是创建一个collection视图,它只包含所有日期的列表,从最近的日期开始

我不能根据用户上传的时间来做,因为用户可以上传前一天的信息。用户也可以在同一天向数据库上传一些内容,在这种情况下,日期将连续两次出现

最有效的方法是什么

Firestore中是否有我可以做的查询?或者我需要获取所有文档日期,并在应用程序中自行排序

任何指导都会很好


谢谢,

您不能使用日期(即2018年1月19日)进行查询。对于您的案例来说,唯一有用的是将时间戳存储在FireStore中。您可以使用以下代码轻松地将日期转换为时间戳:

extension UIDate {
      var millisecondsSince1970:Int {
          return Int((self.timeIntervalSince1970 * 1000.0).rounded())
      }
}

Date().millisecondsSince1970 // 1476889390939
然后,您可以应用FireStore下面的查询来获取基于时间戳的记录

databaseRef.order(by: "timeStamp", descending: true)

您不能使用日期(即2018年1月19日)应用查询。对于您的案例来说,唯一有用的是将时间戳存储在FireStore中。您可以使用以下代码轻松地将日期转换为时间戳:

extension UIDate {
      var millisecondsSince1970:Int {
          return Int((self.timeIntervalSince1970 * 1000.0).rounded())
      }
}

Date().millisecondsSince1970 // 1476889390939
然后,您可以应用FireStore下面的查询来获取基于时间戳的记录

databaseRef.order(by: "timeStamp", descending: true)

到目前为止,Firestore具有
时间戳
,而不是
日期
。这就是你的文件吗?此外,UIDatePicker以您所说的格式返回一个
日期
,而不是
字符串
。到目前为止,Firestore具有
时间戳
,而不是
日期
。这就是你的文件吗?此外,UIDatePicker以您所说的格式返回一个
日期
,而不是
字符串
。更简单的是,您可以使用
时间戳(日期:startDate)
日期
保存到Firestore。这需要
导入FirebaseFirestore
。更简单的是,您可以使用
时间戳(日期:startDate)
日期
保存到Firestore。这需要
导入FirebaseFirestore