CNode

ejs模板显示日期格式化问题

Jjewelknfie发布于12 年前最后回复8 年前9 回复15912 浏览0 收藏

在网上没搜到什么解法, 后来参考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)

M
MontageD#1·8 年前

一楼好评

N
nihgwu#2·12 年前

utils.js

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

app.js

app.locals.dateFormat = utils.dateFormat;
J
julor#3·12 年前

学习

L
ljmomo#4·12 年前

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

I
ijse#5·12 年前

调用个moment.js插件。

T
tulayang#6·12 年前

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

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

J
jeremy16601#8·12 年前

moment 就可以

L
ljmomo#9·12 年前
引用 ijse调用个moment.js插件。

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

参与回复
登录后即可参与回复。登录