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

时间:2017-06-30 14:49:30

标签: javascript jquery twitter-bootstrap jsp jsp-tags

我的JSP form中有以下bootstrap datepicker元素:

<tr>
<td>
   <form:label path="bookStartTime" title="Booking Start Time" class="control-label">Booking Start Time
   <font color="red">&nbsp;&nbsp;*</font>
   </form:label>
</td>
<td>
   <div class='input-group date' id='datetimepicker6'>
   <form:input path="bookStartTime" title="Booking Start time" class="form-control input-sm" placeholder="DD-MM-YYYY hh:mm am/pm" /> 
   <span class="input-group-addon">
      <span class="glyphicon glyphicon-calendar"></span>
   </span>
   </div>
</td>
</tr>

我在下面用javascript选择了这种格式DD-MM-YYYY hh:mm a的时间戳:

$(function () {
    $('#datetimepicker6').datetimepicker({format: 'DD-MM-YYYY hh:mm a'});
    $('#datetimepicker6').data("DateTimePicker").minDate(new Date());
});

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

问题是在javascript中我无法解析此DD-MM-YYYY hh:mm a日期格式。 我尝试过很多方法和时刻。但是很多时候都没有成功。

如果可以提供一些链接/参考或解决方案,那将是很棒的。谢谢!

3 个答案:

答案 0 :(得分:1)

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

例如:

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正是您所寻找的。希望这会有所帮助。

答案 1 :(得分:0)

您可以手动解析日期字符串,因此您应该将Date构造函数与年,月和日参数一起使用:

// 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;
}

答案 2 :(得分:0)

我从@ 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添加到hours