我有一个日期,格式是2014年5月11日太阳。如何使用JavaScript将其转换为2014-05-11 ?

函数taskDate(dateMilli) { var d = (new Date(dateMilli) + ")。分割(' '); D [2] = D [2] + ','; 返回[d[0], d[1], d[2], d[3]]。加入(' '); } var datemilli =日期。解析(' 2014年5月11日'); console.log (taskDate (datemilli));

上面的代码给了我相同的日期格式,2014年5月11日。我该如何解决这个问题?


当前回答

var d = new Date("Sun May 1,2014"); var year = d.getFullYear(); var month = d.getMonth() + 1; var day = d.getDate(); month = checkZero(month); day = checkZero(day); var date = ""; date += year; date += "-"; date += month; date += "-"; date += day; document.querySelector("#display").innerHTML = date; function checkZero(i) { if (i < 10) { i = "0" + i }; // add zero in front of numbers < 10 return i; } <div id="display"></div>

其他回答

也要考虑时区,这一行程序不需要任何库就可以了:

new Date().toLocaleString("en-IN", {timeZone: "Asia/Kolkata"}).split(',')[0]

如果你使用momentjs,现在它们包含了一个YYYY-MM-DD格式的常量:

date.format(moment.HTML5_FMT.DATE)

var d = new Date("Sun May 1,2014"); var year = d.getFullYear(); var month = d.getMonth() + 1; var day = d.getDate(); month = checkZero(month); day = checkZero(day); var date = ""; date += year; date += "-"; date += month; date += "-"; date += day; document.querySelector("#display").innerHTML = date; function checkZero(i) { if (i < 10) { i = "0" + i }; // add zero in front of numbers < 10 return i; } <div id="display"></div>

你可以使用这个函数更好的格式和易于使用:

function convert(date) {
    const d = Date.parse(date)
    const   date_obj = new Date(d)
    return `${date_obj.getFullYear()}-${date_obj.toLocaleString("default", { month: "2-digit" })}-${date_obj.toLocaleString("default", { day: "2-digit"})}`
}

这个函数将把月份和日期格式化为2位输出

Date.js很适合这个。

require("datejs")
(new Date()).toString("yyyy-MM-dd")