从m / d / Y H:I:s创建JavaScript Date对象

时间:2014-06-30 15:57:53

标签: javascript

我正在尝试从m / d / Y H:I:s字符串创建一个JavaScript Date对象。以下是我的尝试。没有H:I:s它可以正常工作,但不适用它。如何从m / d / Y H创建JavaScript Date对象:I:s?

var dt='  5/5/1964   11:13:00 ';
var valid=false;
dt = dt.replace('  ',' ');    //Get rid of double spaces
dt.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); //Trim string
dt=dt.split(' ');
var d=(dt[0])?dt[0].split('/'):[];
var t=(dt[1])?dt[1].split(':'):[];
if (d.length === 3) {
    d=[d[2],d[1]-1,d[0]];   //Change to YMD and month to 0 to 11
    //var date=new Date.apply(null, d.concat(t));  //doesn't work
    dt = d.concat(t).join();
    console.log(dt);
    var date=new Date(dt);
    console.log(date);
    if ( Object.prototype.toString.call(date) === "[object Date]" && !isNaN( date.getTime() )) {
        // it is a date and is valid.  date.valueOf() could also work instead of date.getTime()
        valid=true;
    }
}
if(valid){ doSomethingWithDate(date);}

2 个答案:

答案 0 :(得分:3)

没有真正需要对字符串进行特殊解析,因为Date类构造函数(内部Date.parse)可以自动解析给定的格式:

var date = new Date('  5/5/1964   11:13:00 ');
console.log(date);  // e.g. Tue May 05 1964 11:13:00 GMT+0100 (BST)

MDN中查看更多格式示例。

答案 1 :(得分:1)

正在运行new Date(" 5/5/1964 11:13:00 ")对我来说很好。