【问题标题】:Show day total count using jQuery UI datepicker使用 jQuery UI datepicker 显示总天数
【发布时间】:2016-04-12 07:40:23
【问题描述】:

我正在使用jQuery ui datepicker 并应用了这样的日期格式

2016 年 4 月 30 日,星期三

这里是代码

HTML

<input type="text" id="closedate">

jQuery

$(document).ready(function() {
    $("#closedate").datepicker({ dateFormat: 'DD, d MM, yy' });
});

现在如何在我的输入中像这样从当前日期添加天数?

2016 年 4 月 30 日,星期三(3 天)

括号中的 3 天是从当前日期算起

【问题讨论】:

  • @ArunPJohny,从当前日期算起
  • @Arun P Johny 从当前日期算起的天数,今天是 27,我选择了 30 所以 30-27=3
  • @Rayon Dabre Right

标签: javascript jquery jquery-ui datepicker daycount


【解决方案1】:

您计算日期选择器输入的更改事件。

查看示例代码:

$('#date1').change(function() {
    var diff = new Date() - $('#date1').datepicker("getDate");
    $('#diff').text(Math.floor(diff / (1000*60*60*24) * -1) + 1);
});

看看它的工作原理:

https://jsfiddle.net/ddan/jvxz6g4c/

编辑

您发表评论后的编辑版本:

添加了一些额外的字符串格式和日期工具:

$('#date1').change(function() {
    var pickedDate = $('#date1').datepicker("getDate");
    var diff = new Date() - $('#date1').datepicker("getDate");
    var dayDiff = Math.floor(diff / (1000*60*60*24) * -1) + 1;

    $('#pickedDate').text(getDatStr(pickedDate));
    $('#diff').text('(' + dayDiff + ' Days )');
});

var monthNames = [
  "January", "February", "March",
  "April", "May", "June", "July",
  "August", "September", "October",
  "November", "December"
];

var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];

function getDatStr(date) {
  var day = date.getDate();
  var monthIndex = date.getMonth();
  var year = date.getFullYear();
  var dayOfWeek = date.getDay();

  return days[dayOfWeek] + ', ' + day + ' ' + monthNames[monthIndex] + ', ' +  year;
}

看看它的工作原理:

https://jsfiddle.net/ddan/jvxz6g4c/2/

编辑

基于评论的小修改

https://jsfiddle.net/ddan/jvxz6g4c/4/

稍微靠近一点:https://jsfiddle.net/ddan/jvxz6g4c/6

【讨论】:

  • 这太棒了!!但我有日期在这个Wednesday, 30 April, 2016 (n Days) 的这种格式
  • 根据您的示例编辑。我希望它有所帮助。
  • 嘿,你能看看我附上的图片,这样你就可以更好地理解,你做得很好,但我想在输入中打印那个值
  • 没问题!见已编辑。您可以为其添加一些漂亮的样式。
  • 很高兴能提供帮助,请参阅第 5 版,它更接近您的计划。
【解决方案2】:

只是在answer 的基础上加上DDan 提供的

使用onSelect 事件,你可以使用formatted 由提供的格式化程序框定的值。

$(document).ready(function() {
  $("#closedate").datepicker({
    dateFormat: 'DD, d MM, yy',
    onSelect: function(a, b) {
      var diff = new Date() - $(this).datepicker("getDate");
      diff = Math.floor(diff / (1000 * 60 * 60 * 24) * -1) + 1;
      var value = a + '(' + diff + ' days)'
      $(this).val(value);
    }
  });
});
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<link href="http://code.jquery.com/ui/1.8.21/themes/base/jquery-ui.css" rel="stylesheet" />
<script src="http://code.jquery.com/ui/1.8.18/jquery-ui.min.js"></script>

<input type="text" id="closedate" size='50'>

Fiddle demo

【讨论】:

    【解决方案3】:

    这可能会有所帮助:Get difference between 2 dates in javascript?

    本质上是将日期选择器返回的值转换为标准的 JS 日期。

    var date1 = new Date("7/13/2010");
    var date2 = new Date("12/15/2010");
    var timeDiff = Math.abs(date2.getTime() - date1.getTime());
    var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
    alert(diffDays);
    

    【讨论】:

    • 我不想使用两个日期和日期选择器,我只想使用一个日期选择器,第一个日期将是当前日期,其他日期将被选择日期
    【解决方案4】:

    代码: https://jsfiddle.net/5pr7uhc0/

    <div class="form-group">
        <label class="control-label col-sm-2" for="date">Date:</label>
        <div class="col-sm-5">
            <input id="date1" value="Pick Date" type="button" class="form-control btn btn-default" name="training_start_date" value=""> 
        </div>
    </div>
    <br>
    <span id="pickedDate">  </span>  <span id='diff'>  </span>
    

    jquery:

    $('#date1').datepicker({ dateFormat: 'DD, d MM, yy' });
    
    $('#date1').change(function() {
        var date = $(this).datepicker('getDate');
        var today = new Date();
        var dayDiff = Math.ceil((today - date) / (1000*60*60*24) * -1);
        $('#date1').val($.datepicker.formatDate('DD, d MM, yy', date) + ' ( ' + dayDiff + ' Days )');
    });
    

    刚刚从@DDan 清理了代码。

    【讨论】:

      猜你喜欢
      • 2023-03-10
      • 1970-01-01
      • 2011-01-25
      • 2011-02-10
      • 1970-01-01
      • 2011-07-05
      • 2019-01-19
      • 2013-10-24
      • 2011-12-11
      相关资源
      最近更新 更多