jQuery Datepicker日计数
我有两个jQuery UI日期选择器,当他们都选择了日期时,我希望这些日期之间的差异在选择第二个日期后立即显示在单独的input[type="text"]
中。
另外,理想情况下,我希望减去任何周末时间,只计算周一至周五的天数。
我的(相关)代码如下:
JS:
$('#firstday, #lastday').datepicker({ dateFormat: 'dd/mm/yy' });
XHTML:
大量的搜索使我得到了许多不同的解决方案,我不能按照自己的意愿去工作,所以任何想法都会受到赞赏。
像这样的东西应该工作:
$("#firstday, #lastday").datepicker({ onSelect: function (){ // Date will give time difference in miliseconds, that is why we divide with 1000*60*60*24 var firstday = new Date($("#firstday").val().split("/").reverse().join(",")); var lastday = new Date($("#lastday").val().split("/").reverse().join(","); $("#totaldays").val((lastday - firstday) / 86400000); } });
在节点控制台中,它给出:
> x = new Date("18/5/2010".split("/").reverse().join(",")) Mon, 17 May 2010 22:00:00 GMT > y = new Date("18/5/2015".split("/").reverse().join(",")) Sun, 17 May 2015 22:00:00 GMT > xy -157766400000 > yx 157766400000 > (yx)/86400000 1826
– 编辑 –
当你有开始日期和结束日期周末的天数很容易使用getDay()从星期日的0,星期一的1和星期六的6返回。
Yo也可以使用.getMonth()和.getDate()以及其他一些其他{}条件。
var weekend_count = 0; for (i = firstday.valueOf(); i <= lastday.valueOf(); i+= 86400000){ var temp = new Date(i); if (temp.getDay() == 0 || temp.getDay() == 6) { weekend_count++; } }
你最后会这样做
$("#totaldays").val( (lastday - firstday) / 86400000 - weekend_count);
只是为了在最后做一个说明。 您可能应该在一个单独的函数中推断这些代码(尽可能多),以便使代码更易于维护,以防您在其他地方需要相同的function。
祝好运。