计算两个日期之间的天数,并且日期在 jquery 中由 pickadate 选择

calculate number of days between two dates and dates are selecting by pickadate in jquery

我在 rails 视图中有 3 个文本字段

<div>
<%= f.label :from_date %>
<%= f.text_field :start_date, :class => 'datepicker' %>
</div>
<div>
<%= f.label :to_date %>
<%= f.text_field :end_date, :class => 'datepicker' %>
</div>
<div>
<label>Days</label
<%= f.text_field :days,:readonly => true %>
</div>

通过从 pickadate 中选择日期。 application.js 中的 mt 代码是:

$('.datepicker).pickadate();

我想计算日期之间的天数。我的计算方法定义如下:-

function calculate() {
 var d1 = $('#startdate').pickadate('getDate');
var d2 = $('#enddate').pickadate('getDate');
var diff = 1;
if (d1 && d2) {
diff = diff + Math.floor((d2.getTime() - d1.getTime()) / 86400000);
}
$('#days').val(diff);
 }

但它不能正常工作,缺少一些东西。我没明白。请帮我。提前致谢。

在处理这种日期操作时,我非常喜欢 http://momentjs.com/ 库。

您将专门使用 from() 方法:http://momentjs.com/docs/#/displaying/from/

以下代码将为您提供两个日期之间的差异。

Date.daysBetween = function( date1, date2 ) {
  //Get 1 day in milliseconds
  var one_day=1000*60*60*24;

  // Convert both dates to milliseconds
  var date1_ms = date1.getTime();
  var date2_ms = date2.getTime();

  // Calculate the difference in milliseconds
  var difference_ms = date2_ms - date1_ms;

  // Convert back to days and return
  return Math.round(difference_ms/one_day); 
}

d1 = new Date('2015/5/22');
console.log(d1);
d2 = new Date('2015/6/12');

console.log(Date.daysBetween(d1, d2)); 

示例:jsfiddle

大家好,我是 rails 上 ruby 的新手,而 jquery pickadate 功能对我来说很新。函数在 amsul.ca/pickadate.js/

中定义

来自阅读本网站。我只是想实施我的解决方案。

    $('#start_date').pickadate({
    format: 'dd/mm/yyyy',
    selectMonths: true,
    selectYears: 25
    }
    });
    $('#end_date').pickadate({
    format: 'dd/mm/yyyy',
    selectMonths: true,
    selectYears: 25
    }
  });

调用一个函数来计算没有周末的天数。

var firstDay = new Date($( '#leave_start_date' ).val() ),
        lastDay = new Date($( '#leave_end_date' ).val() ),
        daysDiff = calcHolidays( firstDay,lastDay );
   if ( isNaN( daysDiff ) )
         $( '#leave_days' ).val( "" );
   else
        $( '#leave_days' ).val( daysDiff );
    }

calcHolidays() 函数定义如下。

function calcHolidays( dDate1, dDate2 ) {
var weeks, dateDiff, weekDay1, weekDay2;
if ( dDate2 < dDate1 ) return -1;
weekDay1 = dDate1.getDay(),
weekDay2 = dDate2.getDay();
weeks = Math.floor(( dDate2.getTime() - dDate1.getTime() ) / 604800000);
if ( weekDay1 <= weekDay2 )
dateDiff = ( weeks * 5 ) + ( weekDay2 - weekDay1 );
else
dateDiff = (( weeks + 1 ) * 5) - ( weekDay1 - weekDay2 );
return ( dateDiff + 1 );
}

调用.datepicker change 方法中的计算函数。根据要求,所有功能都运行良好。谢谢你的帮助。