我在Firestore文档中存储了createdAt字段,其中包含用户的日期和时区。例如(UTC-3,2019年12月22日晚上9:21:42)
然后,我有一个云功能,我想在其中检索所有 Today 文档。问题在于云功能不知道时区,并且在检索不同时区的文档时会变得混乱。
const now: Date = new Date();
const docQuery = await db
.collection('users')
.where('createdAt', '>', new Date(now.getFullYear(), now.getMonth(), now.getDate()))
.where('createdAt', '<', new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59))
.get();
now
日期为UTC-0,如果我有UTC-22:00前一天的文档,查询将检索它,但从技术上讲,它不是Today文档。
关于如何解决此问题的任何想法?
答案 0 :(得分:0)
在Firestore文档中使用timestamp
代替日期。
ref.doc(key).set({
created : firebase.firestore.Timestamp.fromDate(new Date("December 10, 1815 19:00:00 EST"))
})
时间戳记表示与任何时区或日历无关的时间点,以UTC纪元时间中的纳秒分辨率表示为秒和秒的分数。
然后可以使用方法toDate()
将时间戳转换为Date对象。