nai*_*per 36 mongoose node.js express
我正在使用Jade在Express.js中渲染我的视图.我正在MongoDB中保存文档并使用Mongoose访问我的文档.我正在保存创建新文档时创建的默认日期,并且我将该日期创建的属性返回到视图,其中需要格式化.MongoDB中存储的日期格式为:
Thu Dec 29 2011 20:14:56 GMT-0600 (CST)
Run Code Online (Sandbox Code Playgroud)
我的问题是:我如何在从MongoDB回来的Jade(或Mongoose或Node.JS)中格式化这个日期?
s3v*_*v3n 63
我有这个要求(expressjs,mongoose,jade),这就是我为自己解决的问题.
首先,我安装momentjs用npm install moment.然后我通过片刻使用这个:
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 });
})
});
Run Code Online (Sandbox Code Playgroud)
然后在Jade中使用它:
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}
Run Code Online (Sandbox Code Playgroud)
Mic*_*ley 51
JavaScript内置了对日期的支持.首先,将您的字符串放入Date对象:
date = new Date('Thu Dec 29 2011 20:14:56 GMT-0600 (CST)')
Run Code Online (Sandbox Code Playgroud)
现在,您可以在日期使用各种方法来获取所需的数据:
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
Run Code Online (Sandbox Code Playgroud)
您可以在MDN参考站点上看到更多方法.您可以使用这些方法构建所需的任何类型的字符串.
为了更加稳健日期/时间分析,格式和操纵,你一定要看看Moment.js由s3v3n在另一个答复中提到.
实际上,您的Mongoose模式中不需要另一个属性来存储创建日期,因为它_id具有该信息.相反,您可以在Mongoose架构上创建虚拟,如下所示:
YourSchema.virtual('date')
.get(function() {
return this._id.generationTime;
});
Run Code Online (Sandbox Code Playgroud)
这将返回原始Javascript日期作为.date每个文档的属性.
然后,您可以更进一步,在该虚拟中格式化您想要的日期:
YourSchema.virtual('date')
.get(function() {
return this._id.generationTime.toDateString();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64615 次 |
| 最近记录: |