当我尝试使用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()”我在数据库中得到了正确的时区它出错了,所以我认为问题在于mongoose中的Date类型,因为它以UTC时间保存,但我希望在当地时间。
我尝试在我的架构中使用类型字符串而不是类型Date,并且我使用“moment-timezone.js”获得了正确的时区,但我查询$ gte和$ lte以查找用户不再有效
在此讨论中here问题是相同的,但他们说将服务器时区更改为UTC,但他们没有说明如何执行此操作。我尝试this更改服务器时区但它对我不起作用(我使用的是Windows 10),我认为这不是正确的路径。
请帮我解决这个问题。告诉我解决这个问题的最佳方法。
谢谢。
答案 0 :(得分:0)
You can do like this:
var d = new Date();
d.setUTCHours(0, 0, 0, 0); // hour,minute,seconds,milliseconds
user.created_at=d;
By this way you can set UTChours for "America/Belem".
For example America/Belem has UTC hours +5 then u can do
d.setUTCHours(5, 0, 0, 0);