我从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
)?
非常感谢您的帮助!
谢谢! :)
答案 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);
答案 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);
最终你可以修改你的字符串来操纵它并以上述格式使用它。