首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongodb和Node.js datetime时区问题

Mongodb和Node.js datetime时区问题
EN

Stack Overflow用户
提问于 2021-01-21 13:35:28
回答 1查看 600关注 0票数 0

我很难理解在mongodb/node.js中查询日期的概念,即使在阅读了google中的许多SO和其他文章之后。

在mongodb中存储来自react datepicker的日期时,根据我的时区,它存储的时间要少一天,但当它被获取时,它显示的是相同的,我可以理解它再次被转换为locale

但是查询是如何响应的呢?

当我从node.js/mongoose查询mongodb时,我没有找到正确的resultSo,我的问题是查询mongodb时,日期是如何传递给mongodb的?例如:

post.find({publish_date:{ $gte:new Date()}}

什么是新的日期值-服务器的本地时区?还是浏览器?

是在比较数据库时将新的日期值转换为utc,还是从服务器传递时进行比较?

我有一个post模型,我希望根据我的时区在published_date上发布帖子。

例如,如果我将2021-01-21 mongo stores放入2021-01-20T18:30:00.000+00:00 -可以理解为存储为UTC

现在,当我查询要发布的帖子时,服务器日期/时间是2021-01-21 -它没有获取任何文档!

当我将publish_date更改为2021-01-22时,mongo store 2021-01-21T18:30:00.000+00:00,然后在文档上生成查询。

我不知道如何解决这个问题。

在这方面的任何帮助都是有帮助的。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-01-21 16:45:26

在MongoDB中,所有的Date值仅存储为UTC-time值。

如果需要,您的客户端应用程序负责将这些UTC时间显示为本地时间。

MongoDB不保留输入时区,如果您出于任何原因需要它,那么您必须将其存储在单独的字段中。

在Mongo中,您可以使用$dateToString显示本地日期/时间值

代码语言:javascript
复制
{ $dateToString: {
    date: <dateExpression>,
    format: <formatString>,
    timezone: <tzExpression>,
    onNull: <expression>
} }

每当需要处理日期/时间值时,我都推荐使用moment.js库。

查询可能是这样的,例如:

代码语言:javascript
复制
{ $gte: moment().startOf('day').toDate() }

我在瑞士,我们有UTC+01:00,因此moment().startOf('day').toDate()返回ISODate("2021-01-20T23:00:00Z")

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65821702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档