我在这里有一个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));
}
答案 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));
}
}