Javascript将mm / dd / yyyy hh:mm(AM | PM)转换为有效日期对象

时间:2015-08-27 21:09:18

标签: javascript

我正在尝试转换表示日期的字符串,例如" 07/13/2015 12:00 AM"到javascript中的有效日期对象。调用新日期(" 07/13/2015 12:00 AM")会产生无效日期。

感谢任何帮助。

3 个答案:

答案 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);