【问题标题】:calculate the number of days in range picker javascript [duplicate]计算范围选择器javascript中的天数[重复]
【发布时间】:2013-08-23 05:06:03
【问题描述】:

我知道以前有人问过这个问题,但我找不到任何与我想要做的事情相近的东西。我正在使用 jQuery Datepicker http://keith-wood.name/datepick.html 并使用带有 2 个日历的范围。在我的应用程序中,我有一项服务,我收取 1 天的价格。我想做的是为最终用户提供一个日期范围,以选择他们想要购买的天数并向他们展示总数。为了让我开始,我只想知道如何计算在该范围内选择的天数。

这是我的代码:

<?php 
// this has the css and javascript includes
include('includes/header.php');
?>
<div class="container">
<div class="row">
<div class="span3"></div>
<div class="span9">
    <form>
  <div class="controls">
    <input id="range2Picker" name="range2Picker" value=""  class="input-large" required="" type="text"> 
  </div>
</form>
</div>
</div>

</div>

<script>
$('#range2Picker').datepick({ 
    date1 = new Date(date1);
    date2 = new Date(date2);
    rangeSelect: true, 
    monthsToShow: 2,
    changeMonth: false,
    minDate: +3,
    onClose: function(date1, date2) { 
        var timediff = date2 - date1;
        alert('Number of days are: ' + timediff); 
    } 

});

</script>

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    涉及Math.ceil 的答案成为夏令时(夏令时)前后问题的牺牲品。例如,在美国:

    Math.ceil((new Date("November 4, 2013").getTime() - 
               new Date("November 2, 2013").getTime()) / (1000 * 3600 * 24)); //=> 3
    

    Math.floor 在 Spring 中也会遇到同样的问题:

    Math.floor((new Date("March 11, 2013").getTime() - 
                new Date("March 9, 2013").getTime()) / (1000 * 3600 * 24)); // 1
    

    Math.round 会更好:

    var days = Math.round( (1*date2 - 1*date1) / 86400000, 0);
    

    【讨论】:

    • 我怀疑他还需要至少 1 天,以防 date1==date2
    • @Paul:可能,但如果是这样的话,它可能需要加一。 (所以今天 - 昨天 => 2。)我不太了解业务案例,但如果需要,很容易添加。
    【解决方案2】:

    它给你以毫秒为单位的差异,将它们转换为天

    var timeDiff = Math.abs(date2.getTime() - date1.getTime());
    var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
    alert(diffDays)​;
    

    【讨论】:

      猜你喜欢
      • 2020-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-05
      • 2013-05-29
      • 1970-01-01
      • 2017-01-11
      • 1970-01-01
      相关资源
      最近更新 更多