如何比较Firebase时间戳?

时间:2019-03-08 20:32:56

标签: javascript firebase google-cloud-firestore firebase-admin

我有这样的云功能代码:

console.log(`ts: ${(element.get('expire') as admin.firestore.Timestamp).toDate().toUTCString()} now: ${admin.firestore.Timestamp.now().toDate().toUTCString()}`)
const greater = (element.get('expire') as admin.firestore.Timestamp) > admin.firestore.Timestamp.now()
const lower = (element.get('expire') as admin.firestore.Timestamp) < admin.firestore.Timestamp.now()
console.log(`greater: ${greater} lower: ${lower}`)

在控制台中:

  

ts:2019年4月8日星期一20:59:59 GMT现在:2019年3月8日星期五20:19:18 GMT

     

更大:错误更低:错误

那么与时间戳比较如何呢?

3 个答案:

答案 0 :(得分:2)

从SDK版本7.10.0开始,您可以直接将Timestamp对象与JavaScript算术不等式比较运算符(>>> df = df.reindex(pd.date_range(df.index[0], df.index[-1],freq='M').tolist() + [d f.index[-1]]) >>> df a date 2015-12-31 0.0 2016-01-31 0.0 2016-02-29 0.0 2016-03-31 0.0 2016-04-30 0.0 2016-05-31 NaN 2016-06-30 NaN 2016-07-30 0.0 <<=>)进行比较

要检查两个Timestamp对象在时间上是否相同,必须使用>=属性(docs)。与isEqual==进行比较将不会检查时间相等性,如果比较不同的对象实例,则会返回===

SDK release notes here

代码段拉到from corresponding GitHub issue

false

答案 1 :(得分:1)

您可以通过比较Timestamp对象上的secondsnanoseconds属性来做到这一点。或者,为简化起见,并且不需要纳秒精度,您可以比较它们的toMillis()值的结果。

答案 2 :(得分:0)

您是否尝试过将时间戳转换为Date对象,以便能够仅比较日期而不是时间戳?

例如:

const greater = new Date(element.get('expire') as admin.firestore.Timestamp) > new Date();
const lower = new Date(element.get('expire') as admin.firestore.Timestamp) < new Date();