我需要在.where("date" == selectedDate)
上返回一个文档,这是用户独立于时区选择的同一天。
目前,我将该date属性的时间、分钟和秒设置为0 (startOfDay使用date-fns
)。如果我位于同一时区,使用特定date
创建的所有文档都将与selectedDate
匹配得很好。但是,如果我更改时区,时区中的date
创建的“date
”将与另一个时区的selectedDate
不匹配。
我怎么能忽略时间,这样我就可以将date
与selectedDate
相匹配
我已经做了.where(date >= startOfSelectedDate).where(date <= endOfSelectedDate)
,它确实返回所有时区的文档,如果是在同一天(显然),但它忽略了在不同时区的日期(转换后)会有所不同的一些情况,比如在巴西在新西兰创建的文档,例如,巴西会落后一天。
对于这位特别的医生来说,我所关心的是,日期在不同的时区是一致的--把它当作一个议程--如果我在3月19日写一个便条,不管我身在何处,它总是写在3月19日的页面上。
发布于 2020-03-18 12:31:10
时间戳和日期对象没有任何时区的概念,Firestore也没有。用于时间戳的JS API文档的内容如下:
时间戳表示与任何时区或日历无关的时间点,在UTC时代,它表示为秒和秒的分数,分辨率为纳秒。
SDK将不会以任何方式帮助您处理围绕时区的问题。这是您需要在自己的代码中处理的事情。您的代码必须检测要使用的时区,然后进行一些日期计算,将所有内容转换为UTC,这是Firestore (以及几乎所有系统)用来表示时间点的方法。一旦将时区相关时间转换为UTC,就可以使用这些时间进行查询。
https://stackoverflow.com/questions/60747025
复制