我正在尝试将开始和结束时间(如进入和退出时间逻辑)从节点js插入到Mongodb中。 我本地系统的时区是IST。客户端和服务器的偏移量均为+5:30。
因此,请按照以下示例进行操作。
entryDate: 15-10-2018,
start: 15-10-2018 01:00:00,
end: 15-10-2018 05:00:00
现在,由于我位于客户端和服务器上的相同时区,因此它不会更改我的日期值并创建新对象。
然后我将这些数据存储到MongoDB中。如您所知,mongo db会将日期转换为UTC,然后将其存储。所以在我的数据库中,它看起来像这样。
entryDate: ISODate("2018-10-15T00:00:00Z"),
start: ISODate("2018-10-14T19:30:26Z"),
end: ISODate("2018-10-14T23:30:26Z")
所以现在,如果我想搜索一个查询,该查询应该为我提供15到16之间的日期和时间记录,那么我将不会获得任何数据。
现在考虑这种情况。我将应用程序移到服务器上。现在,服务器时区为UTC。因此,我传递的每个日期都将直接在UTC中进行转换,因此它将像以前一样插入相同的数据。
现在的区别是,当我想在IST时区中搜索日期范围时,它将给我确切的搜索日期,例如(15-10-2018 00:00:00)至(16-10-2018 00:00) :00)。
在服务器上它将将该日期转换为UTC并可以给我少一天的时间,或者可能是更长时间,例如(14-10-2018 18:30:00)到(15-10-2018 18:30:00 )。所以从一开始我的查询是错误的。
那么如何解决这个问题?谢谢。
答案 0 :(得分:0)
经过一些研究。我有解决办法。
这解决了我的问题。