我如何格式化来自MongoDB的date?

我使用Jade在Express.js中呈现我的视图。 我将文档保存在MongoDB中,并使用Mongoose来访问我的文档。 我保存创build新文档时创build的默认date,并将该date创build的属性返回到视图,其中需要格式化。 存储在MongoDB中的date格式是:

Thu Dec 29 2011 20:14:56 GMT-0600 (CST) 

我的问题是:我如何格式化这个date从翡翠(或Mongoose或Node.JS)从MongoDB回来?

       

网上收集的解决方案 "我如何格式化来自MongoDB的date?"

JavaScript内置了对date的支持。 首先,让你的string进入一个Date对象:

 date = new Date('Thu Dec 29 2011 20:14:56 GMT-0600 (CST)') 

现在,您可以使用date中的各种方法来获取所需的数据:

 date.toDateString() // "Thu Dec 29 2011" date.toUTCString() // "Fri, 30 Dec 2011 02:14:56 GMT" date.getMonth() // 11 date.getDate() // 29 date.getFullYear() // 2011 

您可以在MDN参考站点上看到更多方法。 你可以使用这些方法来构build任何你想要的string。

为了更健壮的date/时间parsing,格式化和操作,你应该在另一个答案中检查出s3v3n提到的Moment.js。

我有这个要求(expressjs,mongoose,玉),这就是我自己解决这个问题。

首先我用npm install moment安装了momentjs 。 然后我通过这个时间来看看:

 var moment = require('moment'); app.get('/', function(req, res){ // find all jobs using mongoose model Job.find().exec(function(err, items){ // pass moment as a variable res.render('status', { 'jobs': items, moment: moment }); }) }); 

然后在翡翠中这样使用它:

 table tr td Subject td Posted at td Status each job, i in jobs tr td #{job.subject} td #{moment(job.postedAt).format("YYYY-MM-DD HH:mm")} td #{job.status} 

我想你还没有尝试过简单的方法?

 #{storeddate.toDateString()} 

实际上,您不需要Mongoose模式中的另一个属性来存储创builddate,因为_id具有该信息。 相反,你可以在你的Mongoose模式上创build一个虚拟的 ,就像这样:

 YourSchema.virtual('date') .get(function() { return this._id.generationTime; }); 

这将返回原始的Javascriptdate作为每个文档的。

然后,您可以进一步进一步,按照您想要的方式在该虚拟中设置date:

 YourSchema.virtual('date') .get(function() { return this._id.generationTime.toDateString(); }); 

这里是一个例子,如何做到这一点(使用EJS)

  <% var monthNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; var d = post.date.getDate(); var m = monthNames[post.date.getMonth()]; var y = post.date.getFullYear(); %> 

现在你可以使用这些variables像这样…

 <small style="color: red"><%= post.date %></small> 

来源: https : //medium.com/@littlelostify/how-to-format-mongoose-crappy-date-10df67d7a2d6

我的解决scheme是:

向您的快速应用程序本地人添加momentjs ,如下所示:
app.locals.moment = require('moment');

那么你可以使用任何玉文件的时刻:
span='(Created at: ' + moment(obj.createTime).format("YYYY/MM/DD") + ')'

参考: 在服务器端Jade模板中使用实用程序库

非常简单的方法步骤 –

  1. 通过npm时刻安装 – 保存

  2. 声明var moment = require('moment');

  3. 在res.render'filename.ejs',{moment:moment})中定义declarevariables;

  4. 把这个ejs放在你的视图文件中<%= moment(data.column_name_of_your_date).format('DD MMM YYYY'); %>

产量为2017年6月9日

你可以改变格式检查出来的瞬间链接为不同的格式http://momentjs.com/