试图格式化玉模板上的date
我有一个index.js:
exports.index = function(req, res){ db.courses.find(function(err, currentCourses) { res.render('index', { currentCourses: currentCourses }); }); };
在我的玉模板上:
tr td #{currentCourses[0].start}
这是一个date,格式为“Sun Sep 2013 2013 00:00:00 GMT + 0100(BST)”。
我怎样才能把它格式化为“2013年9月29日”?
编辑(在Ed Hinchliffe的评论之后):
-function prettyDate(dateString){ -var d = date.getDate(dateString); -var monthNames = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ]; -var m = monthNames[date.getMonth()]; -var y = date.getFullYear(); -return d+' '+m+' '+y; -} for course in currentCourses tr td #{prettyDate(course.start)}
不幸的是不是特别容易 你需要一个函数来在你的模板里面或者在外面格式化一个string(并且传递漂亮的string)。
像这样的东西(JADE)
-function prettyDate(dateString){ //if it's already a date object and not a string you don't need this line: -var date = new Date(dateString); -var d = date.getDate(); -var monthNames = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ]; -var m = monthNames[date.getMonth()]; -var y = date.getFullYear(); -return d+' '+m+' '+y; -} tr td #{prettyDate(currentCourses[0].start)}
我的解决scheme是:
向您的快速应用程序本地人添加momentjs ,如下所示:
app.locals.moment = require('moment');
那么你可以使用任何玉文件的时刻:
span='(Created at: ' + moment(obj.createTime).format("YYYY/MM/DD") + ')'
参考:
在服务器端Jade模板中使用实用程序库
胡志峰的上述解决scheme给了我正确的方向。 不幸的是app.locals.moment没有为我工作。
但是您也可以直接将require('moment')
传递给模板属性的对象。
var data = { title: 'some nice title', updateDate: new Date(), ...., moment: require( 'moment' ) };
然后照常传递数据对象到模板函数。
var template = pug.compile( source ); var html = template( data );
源文件示例:
doctype html html head title= title body div= moment(updateDate).format('YYYY-MM-DD')
你应该格式化date服务器端。 限制在模板内完成的逻辑数量最小 – 理想情况下完全没有。