我有几个日期采用这种文本格式:
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)
日期格式错误。只需要删除coma
,th
和AM/PM
。因此,输入文本必须类似于
var date = "March 12 2015 8:37:29";
所以在那之后你可以做
var date_o = new Date(date);
console.log(date_o instanceof Date); // ->true