我有一个日期,格式是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日。我该如何解决这个问题?


当前回答

const formatDate = d => [
    d.getFullYear(),
    (d.getMonth() + 1).toString().padStart(2, '0'),
    d.getDate().toString().padStart(2, '0')
].join('-');

您可以使用padstart。

padStart(n, '0')确保字符串中至少有n个字符,并在它前面加上'0',直到达到该长度。

Join('-')连接一个数组,在每个元素之间添加'-'符号。

getMonth()从0开始,因此是+1。

其他回答

不需要库

纯JavaScript。

下面的例子是从今天开始的两个月:

var d = new Date() d.setMonth(d.getMonth() - 2); var dateString =新的日期(d); console.log('格式化前',dateString, '格式化后',dateString. toisostring ().slice(0,10))

我有一个关于这个问题的提纲

dateInstance.toLocaleDateString().replaceAll("/", "-").split("-").reverse().join("-");

我建议使用类似formatDate-js的东西,而不是每次都试图复制它。只需使用一个支持所有主要strftime操作的库。

new Date().format("%Y-%m-%d")
const formatDate = d => [
    d.getFullYear(),
    (d.getMonth() + 1).toString().padStart(2, '0'),
    d.getDate().toString().padStart(2, '0')
].join('-');

您可以使用padstart。

padStart(n, '0')确保字符串中至少有n个字符,并在它前面加上'0',直到达到该长度。

Join('-')连接一个数组,在每个元素之间添加'-'符号。

getMonth()从0开始,因此是+1。

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

date.format(moment.HTML5_FMT.DATE)