从Firestore查询数据时,如何将保存的字符串格式的日期与当前日期进行比较?

时间:2019-08-27 09:02:01

标签: ios swift firebase google-cloud-firestore

Firestore Db

我在特定集合中创建的每个文档中都有一个日期字段。此日期字段的数据另存为字符串。执行查询时,我想通过firebase中的whereField()方法属性将date字段与当前日期进行比较,以获取与该比较一致的文档。

我已经在下面尝试了一些代码,但是它并不能完全满足要求。 日期字段中的数据以eventDate: "Fri Aug 30 2019"

格式保存
   let db = Firestore.firestore()

   let date = Date.init()

   let formatter = DateFormatter()

   formatter.dateStyle = .long
   formatter.timeStyle = .none
   formatter.locale = Locale(identifier: "en_US")
   formatter.dateFormat = "eee MMM dd yyyy"

   let currDate = formatter.string(from: date)

   db.collection("Events").whereField("eventDate", isGreaterThanOrEqualTo: currDate).getDocuments() {
   // completion code not necessary for this question

上面的代码仅返回在Tue Aug 27 2019Wed Aug 28 2019上发生的事件,并且知道发生事件的日期还有更多。

1 个答案:

答案 0 :(得分:0)

使用日历组件应该是更好的方法,像这样吗?

let db = Firestore.firestore()

let calendar = Calendar.current
let components = calendar.dateComponents([.year, .month, .day], from: Date())
let currDate = calendar.date(from: components)!

db.collection("Events").whereField("eventDate", isGreaterThanOrEqualTo: currDate).getDocuments()