已移至stackexchange: https://codereview.stackexchange.com/questions/135436/how-can-i-interpret-the-time-with-less-code
我真的不喜欢坚持很多如果在一起,我认为它看起来像一个孩子堆叠...但如果有人知道如何做同样的事情,我正在使用这个代码,但用更少的线,它将是大。
if(json.Data.length>0){
for(var i=0;i<=json.Data.length-1;i++)
{
s += '<tr><td>' + data[i].data1+ '</td>';
s += '<td>'+ data[i].data2+ '</td>';
if(data[i].data3== null) {
s += '<td>N / A</td>' +
'<td>Has not logged in.</td>';
}
else {
s += '<td>' + moment(data[i].data3).format('DD MMM YYYY hh:mm A') + '</td>';
var time = data[i].data4;
var summary = '<td>' + time + ' minutes since last login.</td></tr>';
if(time >= 60) {
var hour= tiempo / 60;
summary = '<td>' + Math.floor(hora) + ' hours since last login.</td></tr>';
if(hour>= 24) {
var day = hour/ 24;
summary= '<td>' + Math.floor(day) + ' days since last login.</td></tr>';
if(dia >= 7) {
var week= day / 7;
summary = '<td>' + Math.floor(week) + ' weeks since last login.</td></tr>';
if(week >= 4) {
var month = week / 4;
summary = '<td>' + Math.floor(mes) + ' months since last login.</td></tr>';
}
}
}
s += summary;
} else {
s += summary;
}
}
}
}
$('#bodytable').empty().append(s);
这里真正重要的是从行
var time = data[i].data4;
然后。
对于某些上下文:data[i].data4
来自
DATEDIFF(mi, Column3, getdate())
。
正如你所看到的,返回的结果将在几分钟内从那时起我开始检查多少小时,天等等,我甚至喜欢在每一行之间添加一个(如果它大于1) )所以我可以将措辞改为单数而不是复数但我认为只是为了决定是否只是简单地写'分钟'而不是'分钟'来判断。
答案 0 :(得分:1)
我不是100%肯定您的JSON对象,但您可以使用momentjs#fromNow来获取相对时间字符串。
哪种超级简化了代码。
if(json.Data.length>0){
for(var i=0;i<=json.Data.length-1;i++) {
s += '<tr><td>' + data[i].data1+ '</td>';
s += '<td>'+ data[i].data2+ '</td>';
if(data[i].data3== null) {
s += '<td>N / A</td>' +
'<td>Has not logged in.</td>';
}
else {
s += '<td>' + moment(data[i].data3).format('DD MMM YYYY hh:mm A') + '</td>';
// not 100% sure what this value is.
s += '<td>last login ' + moment(data[i].data4).fromNow() +'</td>'
// will output:
// last login 15 seconds ago
// last login 4 years ago
// last login 3 weeks ago
}
}
}
$('#bodytable').empty().append(s);
如果您需要确切格式化的字符串,可以在momentjs中更新它们。
moment.updateLocale('en', {
relativeTime : {
past: "%s"
}
});
// then it would look like:
s += '<td>' + moment(data[i].data4).fromNow() +' since last login</td>';
// 5 minutes since last login
// a hour since last login
// 187 years since last login