Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery日期选择器日计数_Javascript_Jquery_Jquery Ui_Datepicker - Fatal编程技术网

Javascript jQuery日期选择器日计数

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" /> &

我有两个jQuery UI日期选择器,当它们都选择了日期时,我希望在选择第二个日期后,这些日期之间的差异将显示在单独的
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);