如何用javascript解析日期中的“30-06-2017 07:55 pm”

如何用javascript解析日期中的“30-06-2017 07:55 pm”,javascript,jquery,twitter-bootstrap,jsp,jsp-tags,Javascript,Jquery,Twitter Bootstrap,Jsp,Jsp Tags,我的JSP表单中有以下引导datepicker元素: 现在,我需要将datepicker中选择的日期与来自具有相同格式的后端数据库的许多日期进行比较 问题是,在javascript中,我无法解析DD-MM-YYYY hh:MM a日期格式。 我也尝试过使用很多方法和moment.js,但经过很多时间都没有成功 如果您能提供一些链接/参考或解决方案(如果可能的话),那就太好了。谢谢 您可以手动解析日期字符串,因此应该使用带有年、月和日参数的日期构造函数: // parse a date in yy

我的JSP表单中有以下引导datepicker元素:

现在,我需要将datepicker中选择的日期与来自具有相同格式的后端数据库的许多日期进行比较

问题是,在javascript中,我无法解析DD-MM-YYYY hh:MM a日期格式。 我也尝试过使用很多方法和moment.js,但经过很多时间都没有成功


如果您能提供一些链接/参考或解决方案(如果可能的话),那就太好了。谢谢

您可以手动解析日期字符串,因此应该使用带有年、月和日参数的日期构造函数:

// parse a date in yyyy-mm-dd format
function parseDate(date) {
  var parts = date.split('-');
  /* new Date(year, month [, day [, hours[, minutes[, seconds[, ms]]]]]) */
  var newdate = new Date(parts[0], parts[1]-1, parts[2]);
  return newdate;
}

对于格式为DD-MM-YYYY hh:MM a的日期字符串,最好的选择是使用正则表达式,以正确的顺序从字符串中获取所有数字,并将它们传递给日期构造函数以获取日期对象

例如:

var x = '30-06-2017 20:50 pm';
// returns array of matched 2 and 4 digit numbers
var arr = x.match(/([0-9]{2,4})/g); 
// arr equals ['30', '06', '2017', '20', '50']
var dateObj = new Date(arr[2], arr[1], arr[0], arr[3], arr[4]);

就这些,dateObj是你要找的。希望这有帮助。

我从@Raunaqss的答案中找到了更正确的解决方案

    var x=$("#bookStartTime").val();
    var arr = x.match(/([0-9]{2,4})/g);
    if(x!=null && x!="undefined"){
        var splitX=x.split('');
        var ampm= splitX[splitX.length-2]+splitX[splitX.length-1];
    }
    if(ampm=='pm'){
        arr[3]=parseInt(arr[3])+12;
    }
    var dateObj = new Date(arr[2], arr[1]-1, arr[0], arr[3], arr[4], 0, 0);
    alert(dateObj);

我只是检查了时间戳值的末尾是否有pm。如果有,那么就在小时数上加上12。

数据格式中的“a”代表什么?@Raunaqss它代表am/PMS如果它能工作,那就太好了。不过我有一个问题。我的不是24小时制。它是12小时制,因此在结尾有am/pm。那么,如何获得最后一个a?谢谢你的回答!我测试了你的解决方案。工作正常,但只有一个问题:它无法捕捉到a,因此无法跟踪am/pm@RDhaval请稍候,我将更新我的解决方案以适应上午/下午12小时格式。另一个问题是它将2017年7月30日GMT+0530转换为周日,而今天是周五:PI解决了这个周日问题。我度过了第一个月,比如Datearr[2],arr[1]-1,arr[0],arr[3],arr[4];6月30日星期五。
var x = '30-06-2017 20:50 pm';
// returns array of matched 2 and 4 digit numbers
var arr = x.match(/([0-9]{2,4})/g); 
// arr equals ['30', '06', '2017', '20', '50']
var dateObj = new Date(arr[2], arr[1], arr[0], arr[3], arr[4]);
    var x=$("#bookStartTime").val();
    var arr = x.match(/([0-9]{2,4})/g);
    if(x!=null && x!="undefined"){
        var splitX=x.split('');
        var ampm= splitX[splitX.length-2]+splitX[splitX.length-1];
    }
    if(ampm=='pm'){
        arr[3]=parseInt(arr[3])+12;
    }
    var dateObj = new Date(arr[2], arr[1]-1, arr[0], arr[3], arr[4], 0, 0);
    alert(dateObj);