ejs模板显示日期格式化问题
发布于 10 年前 作者 jewelknfie 14393 次浏览 最后一次编辑是 8 年前

在网上没搜到什么解法, 后来参考ejs的文档, 通过它的filter功能实现我要的效果。代码如下:

var moment = require('moment');
var ejs = require('ejs');
ejs.filters.dateformat = function(obj, format) {
    if (format == undefined) {
        format = 'YYYY-MM-DD HH:mm:ss';
    }
    var ret = moment(obj).format(format);
    return ret == 'Invalid date' ? '0000-00-00 00:00:00' : ret;
};   ```

ejs代码:
``` <%=: m.getShowDate | dateformat:'YYYY-MM-DD HH:mm:ss (Z)' %> ```

不知道除此之外大家都用什么方法?
9 回复

utils.js

exports.dateFormat = function (date) {
  return moment(date).format('YYYY年MM月DD日hh:mm:ss dddd');
}

app.js

app.locals.dateFormat = utils.dateFormat;

楼主我用你的方法报错了 不知道啥原因呀!

调用个moment.js插件。

你把问题都看错误了。 另外,你要遵循“低耦合高内聚”。

HTML和模板引擎的作用就是输出字符串,你给模板的任何东西都应该建立在字符串基础上。 想要日期,应该在外界格式化完成,然后发送给模板。

moment 就可以

@ijse 我加了这个插件,并且我发现我ejs 基本的比如 downcase upcase 都不能用。 错误如下: downcase is not defined 没有定义 ,我ejs 也导入了呀。 还有其他地方需要特别注意?

回到顶部