计算两个日期之间的天数,并且日期在 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 方法中的计算函数。根据要求,所有功能都运行良好。谢谢你的帮助。
我在 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 方法中的计算函数。根据要求,所有功能都运行良好。谢谢你的帮助。