我有一个包含日期对象和字符串的2D数组。我使用for循环将数组输出到HTML表。这工作正常,但我需要更改日期格式,从" 2015-12-02 00:00和#34;到2015年12月2日星期三"。数组必须保持日期对象,但我无法弄清楚如何在循环中使用dateFormat或moment.js函数。我做错了什么?
var tasks = new Array();
var index = 0;
function addTask() {
var tempdate = new Date();
var temptask = document.getElementById("taskinfo").value;
var td = document.getElementById("taskdate").value;
tempdate = td + " 00:00";
//window.alert(temptask);
//add array and populate from tempdate and temptask
//generate html table from 2d javascript array
tasks[index] = {
Date: tempdate,
Task: temptask
};
index++
tasks.sort(function(a,b){return new Date(b.Date).getTime() - new Date(a.Date).getTime()});
var tablecode = "<table class = 'tasktable' border='1'>" +
"<tr>"+
"<th>Date</th>"+
"<th>Task</th>"+
"</tr>";
for (var i = 0; i < tasks.length; i++) {
tablecode = tablecode + "<tr>" +
"<td>" + tasks[i]["Date"] + " </td>" +
"<td>" + tasks[i]["Task"] + " </td>" +
"</tr>";
}
tablecode = tablecode + "</table>";
document.getElementById("bottomright").innerHTML = tablecode;
return false;
}
答案 0 :(得分:1)
在addTask
函数中,您将tempdate
声明为日期,但稍后通过为其指定字符串值将其转换为字符串。尝试这样的事情:
var td = document.getElementById("taskdate").value;
var tempdate = new Date(td);
这将tempdate设置为Date,而不是字符串。然后在你的循环中,只需在你的日期上调用toDateString()
,就像这样:
"<td>" + tasks[i]["Date"].toDateString() + " </td>"