在javascript中为日期创建条件

时间:2016-06-16 15:08:06

标签: javascript jquery ruby-on-rails datetime ruby-on-rails-4

我在这里有一个javascript函数。控制器向该视图发送两个日期(start_date和end_date)。我想在我的功能中做的就是在做某些动作之前检查一个条件。

<script>
$(function() {
  var start_date = <% @date1 %>
  var end_date = <% @date2 %>
  unavailableDates = [];
  $.ajax({
    url: '/preload',
    data: {'voiture_id': <%= @voiture.id %>},
    dataType: 'json',
    success: function(data) {
      $.each(data, function(arrID, arrValue) {
        for(var d = new Date(arrValue.start_date); d <= new Date(arrValue.end_date); d.setDate(d.getDate() + 1)) {
          // CHECK that !(d >= start_date && d <= end_date) before push action
          unavailableDates.push($.datepicker.formatDate('d-m-yy', d));
        }
      });
}
</script> 

。 start_date&amp;的类型end_date

    t.datetime "start_date"
    t.datetime "end_date"

我希望很清楚,谢谢!

解决方案:

    var startDate = new Date(<%= @date1.to_i*1000 %>);
    var endDate = new Date(<%= @date2.to_i*1000 %>); 

                    if (!(d.getDate()>=startDate.getDate() && d.getDate()<=endDate.getDate()))
                {  
                unavailableDates.push($.datepicker.formatDate('d-m-yy', d));       
                }

1 个答案:

答案 0 :(得分:0)

以下是执行与您尝试实现的功能相同的代码段。在评估日期时,您似乎缺少 getTime()功能。

/* setting up temporary date range for iteration */

var unavailableDates = [];
var endDate=new Date();
var startDate=new Date(endDate);
startDate.setDate(startDate.getDate()-7);

for(var startdt= new Date(startDate);
    startdt.getTime()<endDate.getTime();
    startdt.setDate(startdt.getDate()+1)){

  if(startdt.getTime()>=startDate.getTime() && startdt<=endDate.getTime())
  {         
      unavailableDates.push(new Date(startdt));
  }    
}