一. 编写公共方法,这里以赋值到 laytpl 对象为例

//时间戳的处理
function toDateString (d, format){
var date = new Date(d || new Date())
,ymd = [
this.digit(date.getFullYear(), 4)
,this.digit(date.getMonth() + 1)
,this.digit(date.getDate())
]
,hms = [
this.digit(date.getHours())
,this.digit(date.getMinutes())
,this.digit(date.getSeconds())
];

format = format || 'yyyy-MM-dd HH:mm:ss';

return format.replace(/yyyy/g, ymd[0])
.replace(/MM/g, ymd[1])
.replace(/dd/g, ymd[2])
.replace(/HH/g, hms[0])
.replace(/mm/g, hms[1])
.replace(/ss/g, hms[2]);
};

//数字前置补零
function digit (num, length, end){
var str = '';
num = String(num);
length = length || 2;
for(var i = num.length; i < length; i++){
str += '0';
}
return num < Math.pow(10, length) ? str + (num|0) : num;
};
  • 讲解:
    • 之所以将方法暴露给 laytpl 对象,是便于模板能读取到,因为 laytpl 模板是在一个封闭的函数作用域中进行解析的,它只能读取到模板内的方法/属性和全局方法/属性
    • toDateString(d, format) 方法接受两个参数。其中 d 可以是日期对象,也可以是毫秒数。format 是日期字符的格式,你可以随意定义,如:yyyy年MM月dd日

二. 在列模板中调用时间戳的处理方法

// 如果是layui ,你可以通过下面的方式调用
table.render({ //其它参数在此省略
elem: '#demo'
,cols: [[
{field: 'createTime', title: '创建时间', templet: '<div>{{ toDateString(d.time, 'yyyy-MM-dd HH:mm:ss') }}</div>'}
]]
});

// 如果是普通的js文件,你可以通过下面的方式调用
toDateString(d.time, 'yyyy-MM-dd HH:mm:ss');

讲解:

d.time 中的 time 即是你接口返回的字段,如果是 unix 时间戳,这里记得要 d.time*1000,如果是毫秒数,这里直接传 d.time 即可。