从firestore查询数据时,如何将保存的字符串格式的日期与当前日期进行比较?
Posted
技术标签:
【中文标题】从firestore查询数据时,如何将保存的字符串格式的日期与当前日期进行比较?【英文标题】:How to I compare a date in saved string format to current date when querying data from firestore? 【发布时间】:2019-08-27 09:02:01 【问题描述】:我在特定集合中创建的每个文档中都有一个日期字段。此日期字段的数据保存为字符串。当执行查询时,我想通过 firebase 中的 whereField()
方法属性将日期字段与当前日期进行比较,以便获得与此比较一致的文档。
我在下面尝试了一些代码,但它并不能完全满足要求。
日期字段中的数据以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 2019
和Wed Aug 28 2019
的事件,并且知道还有更多事件发生的日期。
【问题讨论】:
请将您的数据库结构添加为截图。 【参考方案1】:使用日历组件应该是更好的方法,像这样?
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()
【讨论】:
它和我之前晒的有什么不同? 在您的代码中,currDate 是一个字符串;通过我的修改,currDate 是一个 Date 不是吗? 我的currDate是一个字符串,因为“eventDate”值本身就是一个字符串..我这样做是为了达到比较字符串日期的目的以上是关于从firestore查询数据时,如何将保存的字符串格式的日期与当前日期进行比较?的主要内容,如果未能解决你的问题,请参考以下文章
如何将很长的字符串保存到firebase firestore数据库中?