【发布时间】:2016-11-08 23:50:23
【问题描述】:
当我尝试使用 mongoose 在 mongodb 中存储内容时遇到时区问题。
我创建了这样的架构:
var userSchema = new mongoose.Schema({
name: {
type: String
},
created_at: {
type: Date
}
});
在我的代码中查找日期范围($gte 和 $lte)中的用户很重要。
创建用户时出现问题:
user.created_at = new Date();
在我的数据库中,这个用户是用错误的时区创建的。
我曾尝试使用“moment-timezone.js”,例如:
user.created_at = moment().tz("America/Belem").format();
时区的问题在 mongodb 中仍然相同,但是当我在控制台登录“moment().tz("America/Belem").format()”时,我在数据库中获得了正确的时区,但它出错了,所以我认为问题在于猫鼬中的 Date 类型,因为它节省了 UTC 时间,但我想要在本地时间。
我尝试在架构中使用 String 类型而不是 Date 类型,并且我使用“moment-timezone.js”获得了正确的时区,但我对 $gte 和 $lte 的查询以查找用户不再起作用.
在此讨论中here 问题是相同的,但他们说将服务器时区更改为 UTC,但他们没有展示如何做到这一点。我尝试this 更改服务器时区,但它对我不起作用(我使用的是 Windows 10),我认为这不是正确的路径。
请帮我解决这个问题。告诉我解决这个问题的最佳方法。
谢谢。
【问题讨论】:
-
请看这个。您应该始终尝试以 UTC 格式存储时间。 stackoverflow.com/a/40425115/2683814
-
首先感谢您的回复。我尝试了您的解决方案,但没有奏效。 :'(
-
您在数据库中看到了什么?现在日期如何存储?
-
我遇到了和以前一样的时区问题。没有任何改变。
-
Date在 MongoDB 中始终使用 UTC,老实说,无论您当前的想法如何,您都应该使用它。 :)
标签: javascript node.js mongodb datetime mongoose