2014-01-17 101 views
0

我从API结果中获取此日期/时间值"20131218"Javascript转换日期

我想要做的就是将这个日期转换成类似"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?或者如果没有相应的内容,我如何将此值转换为我的预期结果(2013-12-18)使用javascript?

您的帮助将不胜感激!

谢谢! :)

+0

退房http://momentjs.com – cyberwombat

回答

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

最终,您可以修改您的字符串来操作它并以前述格式使用它。

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

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