Javascript转换日期

时间:2014-01-17 05:45:46

标签: 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 }所以显然这是错误的。

我在这里的问题是什么相当于javascript中的strtotime?或者如果没有等价物,我如何使用javascript将此值转换为我的预期结果(2013-12-18)?

非常感谢您的帮助!

谢谢! :)

3 个答案:

答案 0 :(得分:1)

将该值转换为日期无效。因此,要么从您的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);

JSFIDDLE DEMO

答案 1 :(得分:1)

Javascript有一个Date.parse方法,但你拥有的字符串不适合传递给它。您不需要创建日期对象来格式化字符串。考虑:

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]);
}

答案 2 :(得分:0)

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

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);

最终你可以修改你的字符串来操纵它并以上述格式使用它。