Javascript jQuery日期选择器日计数
我有两个jQuery UI日期选择器,当它们都选择了日期时,我希望在选择第二个日期后,这些日期之间的差异将显示在单独的Javascript jQuery日期选择器日计数,javascript,jquery,jquery-ui,datepicker,Javascript,Jquery,Jquery Ui,Datepicker,我有两个jQuery UI日期选择器,当它们都选择了日期时,我希望在选择第二个日期后,这些日期之间的差异将显示在单独的input[type=“text”]中 另外,我希望我的计数能减去任何周末,从周一到周五算起 我的(相关)代码如下: JS: XHTML: <label for="firstday">First Day of Leave</label> <input type="text" name="firstday" id="firstday" /> &
input[type=“text”]
中
另外,我希望我的计数能减去任何周末,从周一到周五算起
我的(相关)代码如下:
JS:
XHTML:
<label for="firstday">First Day of Leave</label>
<input type="text" name="firstday" id="firstday" />
<label for="lastday">Last Day of Leave</label>
<input type="text" name="lastday" id="lastday" />
<label for="totaldays">Total Days</label>
<input type="text" name="totaldays" id="totaldays" />
休假的第一天
休假的最后一天
总天数
大量的搜索让我找到了许多不同的解决方案,其中没有一个是我可以随心所欲地工作的,因此任何想法都会受到赞赏。类似的方法应该可以:
$("#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
> x-y
-157766400000
> y-x
157766400000
> (y-x)/86400000
1826
--编辑--
当您有开始日期和结束日期时,可以使用getDay()轻松计算周末的天数,它从0返回星期天,从1返回星期一。。。周六六点
您还可以将.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++;
}
}
只是在结尾做个记录。您可能应该在一个单独的函数中外推此代码(尽可能多),以使您的代码更易于维护,以防在其他地方需要相同的函数
祝你好运。你有权访问任何后端代码,如PHP或.NET吗?将值发布回服务器并返回日期差可能更容易。另外,您看到这个堆栈溢出问题了吗?是的,我可以使用PHP。我通常不考虑为JavaScript路由进行此操作,但我知道,只需要使用这个页面的机器不能关闭JS,我想我可以安全地使用它。谢谢你的链接,我会浏览一下。嗨,谢谢你的回答。我已经把你的代码和我的dateFormat组合在一起了,但是它抛出了一个很好的“NaN”问题。我将有一个关于……的剧本,我做了一些更正。再加一句,你可以用Math.abs(x-y)来忽略负值。是的,看起来不错,干杯。我在里面加了一个“+1”使日期包含在内,但这很好。你知道周末怎么打折吗?!明亮的非常感谢。
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);