在Javascript中从数组循环输出格式化日期

时间:2015-12-06 00:12:00

标签: javascript arrays loops date

我有一个包含日期对象和字符串的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;

}

1 个答案:

答案 0 :(得分:1)

addTask函数中,您将tempdate声明为日期,但稍后通过为其指定字符串值将其转换为字符串。尝试这样的事情:

var td = document.getElementById("taskdate").value;
var tempdate = new Date(td);

这将tempdate设置为Date,而不是字符串。然后在你的循环中,只需在你的日期上调用toDateString(),就像这样:

"<td>" + tasks[i]["Date"].toDateString() + " </td>"