javascript将javascript文本转换为日期对象“无效的日期”

时间:2015-04-18 09:59:37

标签: javascript date

我有几种日期格式:

var date = "March 12th 2015, 8:37:29 pm";

我想获得一个日期对象,但是在创建日期对象时我的日期无效。

我试过这样做:

var date_o = new Date(date);

没有成功。还尝试过:

  var at = Date.parse(date.replace(/[ap]m$/i, ''));
  if(date.match(/pm$/i) >= 0) {
     at += 12 * 60 * 60 * 1000;
  }
  var date_o = new Date(at);

没有成功。什么是正确的方法?

我想我应该告诉日期对象获取带"format('MMMM Do YYYY, h:mm:ss a')"的字符串。这可能吗?

3 个答案:

答案 0 :(得分:1)

如您所愿,使用构造函数获取日期:

var date = "March 12th 2015, 8:37:29 pm";

function getDate(str){
    var monthList = ['January','February','March','April','May'
        ,'June','July','August','September','October','November','December'];

    var year = str.slice(11,15);
    var month = monthList.indexOf(str.slice(0,5));
    var day = str.slice(6,8);

    var isAm = str.slice(str.length-2);
    var hour = isAm == 'am' ? +str.slice(17,18) + 12:str.slice(17,18);
    var minute = str.slice(19,21);
    var second = str.slice(22,24);

    var date = new Date(year,month,day,hour,minute,second);

    console.log(date)
    return date;

}

getDate(date)

答案 1 :(得分:0)

已回答here。 我建议您使用库将字符串转换为日期。

答案 2 :(得分:0)

您的日期格式错误。只需删除comathAM/PM即可。 因此,输入文本必须类似于

var date = "March 12 2015 8:37:29";

所以在那之后你可以做

var date_o = new Date(date);
console.log(date_o instanceof Date); // ->true