JavaScript 将 JavaScript 文本转换为日期对象"Invalid 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')"的字符串。这可能吗?

如你所愿,使用构造函数得到日期:

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)

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

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

所以在那之后你可以做

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

相关内容

最新更新