如何更改mongoosedate时区?
在模型模式中,
运用
updated: { type: Date, default: Date.now
在server.js中
put(function(req, res) { var query = {name: req.params.name}; // use our bear model to find the bear we want Domain.find(query, function(err, domains) { if (err) res.send(err); var domain = domains[0]; domain.password = req.body.password; // update the bears info domain.updated = new Date(); // save the bear domain.save(function(err, data) { if (err) res.send(err); res.json({ status: 'success', message: 'domain updated!' }, data); }); }); });
然而,
在数据库方面显示,
"updated": "2016-02-27T16:20:42.941Z"
但是,我的时区是UTC + 02.00
所以应该是18:20:42
我做错了什么?
时间戳是时区不可知的,存储为一个unix时间戳。 这个时间戳将跨时区工作,并且节点使用服务器的当前时区来解释它。 您显示的date已正确存储。 只要您检索它,如果您的服务器的时区是UTC + 2,它会显示您正确的时间。
您可以从特定的UTC时间创build一个Date对象:
new Date(Date.UTC(year, month, day, hour, minute, second))
我改变了这一点,
var utc = new Date(); utc.setHours( utc.getHours() + 2); domain.updated = utc;
现在起作用了。
你的代码没有错。 MongoDb以UTC格式保存date,无论您在哪个时区尝试插入date。
如果在保存到数据库之前loggingdomain.updated,则结果将是UTC + 2(当地时间)
如果您在数据库中看到更新的列,则结果将以UTC表示
如果您从数据库获取更新的列值,那么结果将以UTC + 2(您当地的时间)
使用moment.js
这样简单:
var moment = require('moment'); var utcDate = moment.utc().toDate();
请享用!
我发现在mongoosetimzone插件的解决scheme
看到这里
是工作!)
- 如何在本地主机上为通配符域创builddns服务器,以便与node / express一起使用?
- Node.js从服务器渲染大量的JSON数据
- ExpressJS / NodeJS / Promises:从承诺链早期返回
- 在应用程序中使用中间件expressjsredirect
- 节点expressiones6中文正文中间件不工作
- 在SPA(单页面应用程序)中使用node.js + express.js在服务器端dynamic生成内容的SEO
- 你可以使一个JavaScript的正则expression式失败,而不是传递时发现匹配?
- 在nodeJS中获取SESSIONID
- 如何使用SQL ServerconfigurationPassportjs?