Javascript转换日期

Javascript转换日期,javascript,php,date,Javascript,Php,Date,我从一个API结果中得到这个“20131218”日期/时间值 我想做的是将这个日期转换成类似这样的内容“2013-12-18”。我知道这在PHP中非常简单,只需执行以下代码: echo date("Y-m-d",strtotime('20131218')); 输出:2013-12-18 这是我在javascript中尝试的: var myDate = new Date("20131218"); console.log(myDate); 但是输出是Date{Invalid Date},显然这是

我从一个API结果中得到这个
“20131218”
日期/时间值

我想做的是将这个日期转换成类似这样的内容
“2013-12-18”
。我知道这在PHP中非常简单,只需执行以下代码:

echo date("Y-m-d",strtotime('20131218'));
输出:
2013-12-18

这是我在javascript中尝试的:

var myDate = new Date("20131218");
console.log(myDate);
但是输出是
Date{Invalid Date}
,显然这是错误的

我的问题是,在javascript中,strotime的等价物是什么?或者,如果没有等效值,我将如何使用javascript将该值转换为预期结果(
2013-12-18

非常感谢您的帮助


谢谢!:)

它显示无效日期的原因是,它希望它采用格式

Following format: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS
如果您使用以下格式分解字符串,只需在相关位置添加破折号,就可以使用newDate

1.    var myDate = new Date("2013-12-18"); 
      alert(myDate);

2.    var myDate = new Date(2013,12,18);

最终,您可以修改字符串并以上述格式使用它。

该值无效,无法将其转换为日期。因此,您可以从PHP代码中以适当的格式发送它,如
20131218

或者将Javascript中的值转换为类似的格式

var dateVal="20131218"; 
/*
 // If it's number  *******   //
var numdate=20131218;
var dateVal=numdate.toString();
*/

var year=dateVal.substring(0,4);
var mnth=dateVal.substring(4,6);
var day=dateVal.substring(6,8);
var dateString=year+"-"+mnth+"-"+day;


var actualDate = new Date(dateString); 
alert(actualDate);
Javascript有一个方法,但您拥有的字符串不适合传递给它。您不需要创建日期对象来格式化字符串。考虑:

function formatDateStr(s) {
    s = s.match(/\d\d/g);
    return s[0] + s[1] + '-' + s[2] + '-' + s[3];
}

alert(formatDateStr('20131218')); // '2013-12-18'
如果要将其转换为日期对象,则:

function parseDateStr(s) {
    s = s.match(/\d\d/g);
    return new Date(s[0] + s[1], --s[2], s[3]);
}
退房