我有两个日期时间选择器(在http://trentrichardson.com/examples/timepicker处找到),并计算它们之间的工作日数。除了一个特定的一周,这似乎工作正常。
例如,如果您在第一个框中选择15/09/2014而在第二个框中选择22/09/2014,则它将计算5天,因为它们之间有5个工作日。太好了!
但是,选择20/10/2014和27/10/2014,它将计算4.此外,24/10/2014和27/10/2014的选择表明日期之间没有差异。< / p>
我在代码中尝试了很多小的改动(比如改变周末的方式等等)但是它很奇怪,因为它适用于我尝试的每一个案例,除非那个星期,所以我试图修复已经有效的代码。
我不明白为什么会这样,是吗?
JS小提琴:http://jsfiddle.net/xxbjL40q/
HTML
<h4>When are you off from?</h4>
<div class="form-group">
<input type="text" class="form-control" id="firstday" name="firstday">
</div>
<h4>When are you back in the office?</h4>
<div class="form-group">
<input type="text" class="form-control" id="backday" name="backday">
</div>
<p id="daysoffmessage">Please choose a day from both boxes. If you update your 'from' date after your 'back' date, please reselect your 'back' date to correct the day count.</p>
<input type="text" id="daycount" name="daycount">
JS
$('#firstday').datetimepicker({
hourMin: 0,
hourMax: 12,
stepHour: 12,
showMinute: false,
showTime: false,
dateFormat: 'dd/mm/yy',
constrainInput: true,
beforeShowDay: $.datepicker.noWeekends,
firstDay: 1
});
$('#backday').datetimepicker({
hourMin: 0,
hourMax: 12,
stepHour: 12,
showMinute: false,
showTime: false,
dateFormat: 'dd/mm/yy',
constrainInput: true,
beforeShowDay: $.datepicker.noWeekends,
firstDay: 1,
onSelect: function(){
// get the stuff
var firstday = $('#firstday').datepicker('getDate');
var backday = $('#backday').datepicker('getDate');
// sort the weekends out
var weekend_count = 0;
for (i = firstday.valueOf(); i <= backday.valueOf(); i+= 86400000) {
var temp = new Date(i);
if (temp.getDay() == 0 || temp.getDay() == 6) {
weekend_count++;
}
}
// how many weekdays?
var total = ((backday - firstday) / 86400000) - weekend_count;
var total_1dp = total.toFixed(1);
// put the info where I need it
$('#daycount').val(total_1dp);
}
});
答案 0 :(得分:1)
<强>更新即可。因此,正如@ScottBrown所说,解决方法是将hourMin
从0
更改为6
。在将“日光标准时间”更改为“夏令时”期间,它有助于消除不正确的行为(周日计算两次),即使它不是通用的解决方案。
...我的modified fiddle在选择第二个日期时出现处理错误,并在第一个日期发生更改时重新计算值。