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。

祝好运。