【问题标题】:Pass and filter items by TimeStamp in Firestore for Swift在 Firestore for Swift 中按时间戳传递和过滤项目
【发布时间】:2019-06-24 16:47:48
【问题描述】:

我正在尝试在我的应用程序中通过 Firestore Timestamp 中的今天日期。我得到今天的日期是这样的

formatter.dateFormat = "MMMM d, yyyy"
let result = formatter.string(from: date)
print("Today date is \(result)")
let startDate = result + " " + "07:00:00"
let endDate = result + " " + "23:00:00"

我必须将今天的日期从早上 7 点传递到下午 23:00,并将此日期存储在 startDateendDate 中。现在我在Firestore 查询中传递这些时间,如下所示:-

self.db.collection("Locations").whereField("userid", isEqualTo: "\(selectedUserID)").whereField("createddatetime", isGreaterThanOrEqualTo: "\(startDate)").whereField("createddatetime", isLessThanOrEqualTo: "\(endDate)").getDocuments()

但我在快照中没有得到任何结果。我怎样才能做到这一点。请帮忙?

【问题讨论】:

    标签: ios swift firebase google-cloud-firestore


    【解决方案1】:

    你需要:

    1) 转换字符串 -> 日期

    2) 转换日期 -> 时间戳(FIRTimestamp)

    formatter.dateFormat = "MMMM d, yyyy HH:mm:ss"
    
    let startTime: Date = formatter.date(from: startDate) ?? Date(timeIntervalSince1970: 0)
    let startTimestamp: Timestamp = Timestamp(date: startTime)
    
    let endTime: Date = formatter.date(from: endDate) ?? Date()
    let endTimestamp: Timestamp = Timestamp(date: endTime)
    

    3) 将函数更改为:

    self.db.collection("Locations")
            .whereField("userid", isEqualTo: "\(selectedUserID)")
            .whereField("createddatetime", isGreaterThanOrEqualTo: startTimestamp)
            .whereField("createddatetime", isLessThanOrEqualTo: endTimestamp)
            .getDocuments() { (snapshot, error) in
    
            ...
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-24
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-17
      相关资源
      最近更新 更多