如何更改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
看到这里
是工作!)
- 如何使用节点和套筒?
- GraphQL – 显示列表或单个对象
- 如何在NodeJS / Express / Jade中正确使用dev和prod资源
- 如何在同一app.get函数内的res.redirect方法上传递req.setHeaders方法?
- Angular with CoffeeScript和Jade for前端,Node,Express和CoffeeScript用于后端
- Node.js / Expressasynchronousfile upload
- 如何使用websockets制作粗糙的应用程序?
- 在LoopbackJS中:如何在启动脚本或服务器端代码中获取服务器协议(http或https)?
- 节点Express内容长度