繁体   English   中英

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

[英]Javascript convert mm/dd/yyyy hh:mm(AM|PM) to valid date object

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

任何帮助表示赞赏。

似乎日期解析器不喜欢直接将AM / PM与分钟/秒相对。

只是一个快速修复

var date = "07/13/2015 12:00AM";
date = date.substr(0, date.length-2) +' '+ date.substr(-2);
new Date(date);

此函数会将日期时间字符串转换为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.jsmoement.js之类的

您可以删除日期并重新构建,例如:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM