javascript - 计算两个日期之间的差异

标签 javascript calendar

我试图计算两个日期之间的差异,我编写了java脚本函数,它工作正常,但问题是它处理天作为月,反之亦然。

例如: 如果第一个日期是 2/7/2013,第二个日期是 3/7/2013 给我 30 天而不是 1 天的结果。

这是我的代码:

<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery- ui.css" />
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>

<script>
$(function() {
$( "#from" ).datepicker({
defaultDate: "+1w",
changeMonth: true,
numberOfMonths: 3,
onClose: function( selectedDate ) {
$( "#to" ).datepicker( "option", "minDate", selectedDate );
}});
$( "#to" ).datepicker({
defaultDate: "+1w",
changeMonth: true,
numberOfMonths: 3,
onClose: function( selectedDate ) {
$( "#from" ).datepicker( "option", "maxDate", selectedDate );
}
});
});
</script>
<form method="post" action="" name="date">

<label for="from"> Start Date : </label>
<input type="text" id="from" name="start" />
<br/>
<label for="to">   End Date : </label>
<input type="text"  id="to"  name="end"/>
<br/>
<input type="submit" name="Submit" value="reserve"    onclick="setDifference(this.form);"/></p>

<input type="hidden" name="result"  />
</form>


<script type="text/javascript">

function setDifference(frm) {
var dtElem1 = frm.elements['start'];
var dtElem2 = frm.elements['end'];
var resultElem = frm.elements['result'];

if(!dtElem1 || !dtElem2 || !resultElem) {
return;
}

var x = dtElem1.value;
var y = dtElem2.value;
var arr1 = x.split('/');
var arr2 = y.split('/');


var dt1 = new Date();
dt1.setFullYear(arr1[2], arr1[1], arr1[0]);
var dt2 = new Date();
dt2.setFullYear(arr2[2], arr2[1], arr2[0]);

resultElem.value = (dt2.getTime() - dt1.getTime()) / (60 * 60 * 24 * 1000);
}
</script>

<?php

$from= $_POST['start'];
$to= $_POST['end'];
$result = $_POST['result']; 
?>

Check In Date : <?php echo $from; ?></label><br />
Check Out Date : <?php echo $to; ?></label><br />
Number Of days: <?php echo $result; ?></label><br />
<BR/>

最佳答案

月/日/年不是日/月/年

var dt1 = new Date();
dt1.setFullYear(arr1[1], arr1[2], arr1[0]);
var dt2 = new Date();
dt2.setFullYear(arr2[1], arr2[2], arr2[0]);

resultElem.value = (dt2.getTime() - dt1.getTime()) / (60 * 60 * 24 * 1000);

关于javascript - 计算两个日期之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17376593/

相关文章:

Javascript 将当前页面转换为 Canvas ,以便我可以对其进行操作

javascript - 下拉菜单不垂直拉伸(stretch)

javascript - 如何仅在每个输入的数字后添加逗号

file - 流行的可导入日历格式列表?

javascript - 倒计时后重定向到另一个页面

javascript - 在自定义过滤器 Angular JS 中使用数字过滤器

ruby-on-rails - Ruby on rails : Calendar with events

javascript - p :calendar trigger javascript method after first view is rendered

ios - 根据文本字段中的日期创建事件

swift - UIKit - 日历组件返回负年份的绝对值