我正在尝试转换表示日期的字符串,例如" 07/13/2015 12:00 AM"到javascript中的有效日期对象。调用新日期(" 07/13/2015 12:00 AM")会产生无效日期。
感谢任何帮助。
答案 0 :(得分:4)
似乎日期解析器不喜欢让AM / PM直接对抗分钟/秒。
快速修复
var date = "07/13/2015 12:00AM";
date = date.substr(0, date.length-2) +' '+ date.substr(-2);
new Date(date);
答案 1 :(得分:3)
这是一个将日期时间字符串转换为24小时格式的函数,现在它可以由Date()处理
function set24Hrs(d){
if (d.slice(-2) === "PM"){
var hrs = parseInt(d.slice(-7,-5))
var mins = d.slice(-4,-2)
hrs = hrs + 12
var dd = d.slice(0,9) + " " + hrs + ":" + mins;
return dd;
} else if(d.slice(-2) === "AM"){
return (d.slice(0, 16));
} else {
throw ("UNRECOGNIZED_FORMAT","set24Hrs() Received Unrecognized Formatted String");
}
}
所以,你可以这样使用:
c = new Date(set24Hrs(03/1/2015 3:00PM))
// returns: Sun Mar 01 2015 15:00:00 GMT+0200 (Egypt Standard Time)
现在你有了一个可行的解决方案,但是如果你有很多代码可以在Javascript中使用日期,我建议你看一下像 date.js 和 moement这样的库。 js
答案 2 :(得分:1)
您可以删除日期并重建如下:
var timeStr = "07/13/2015 12:00AM";
var dateFormat = /(\d{2})\/(\d{2})\/(\d{4}) (\d{2}):(\d{2})([AP]M)/;
var dateArray = dateFormat.exec(timeStr);
var d = new Date(dateArray[3],parseInt(dateArray[1])-1,dateArray[2],parseInt(dateArray[4])-(dateArray[6] == 'AM' ? 12 : 0),dateArray[5]);
alert(d);