【问题标题】:Bootstrap datetime picker adding months instead of days引导日期时间选择器添加月份而不是天
【发布时间】:2017-06-19 04:58:07
【问题描述】:

我在jsfiddle 中有以下代码 sn-p。我正在尝试将给定的数字作为天数添加到日历中。

HTML 代码:

<input id="firstDate"/>
<input type="hidden" value="11" id="days">
<br/>
<input id="secondDate"/>

Javascript:

<script>
var pickerOptsGeneral = {
format: "dd/mm/yyyy",
autoclose: true,
minView: 2,
maxView: 2
};

 $('#firstDate')
.datetimepicker(pickerOptsGeneral)
.on('changeDate', function(ev){
var days = document.getElementById("days").value;
 var oldDate = new Date(ev.date);
 var newDate = new Date();
 newDate.setDate(oldDate.getDate() + days);

 secondDate.val(newDate.getDate()+"/"+(newDate.getMonth()+1)+"/"+newDate.getFullYear());
 secondDate.datetimepicker('update');
});
var secondDate = $('#secondDate').datetimepicker(pickerOptsGeneral);
</script>

上面的代码是添加月而不是天。如果我选择日期

01/06/2017 输出将是19/9/2017

如果我硬编码日期:

     newDate.setDate(oldDate.getDate() + 11);

这会给我我想要的输出。谁能帮我解决这个问题?

【问题讨论】:

    标签: javascript jquery twitter-bootstrap bootstrap-datetimepicker


    【解决方案1】:

    试试这个...

    var pickerOptsGeneral = {
        format: "dd/mm/yyyy",
        autoclose: true,
        minView: 2,
        maxView: 2
    };
    $('#firstDate')
      .datetimepicker(pickerOptsGeneral)
      .on('changeDate', function(ev){
         var days = parseInt(document.getElementById("days").value);
         var oldDate = $("#firstDate").data("datetimepicker").getDate();
         var oldDateOriginal = new Date(oldDate);
         var  newDate = new Date(oldDateOriginal);
         newDate.setDate(newDate.getDate() + days);
         secondDate.val(newDate.getDate()+"/"+(newDate.getMonth()+1)+"/"+newDate.getFullYear());
         secondDate.datetimepicker('update');
    });
    var secondDate = $('#secondDate').datetimepicker(pickerOptsGeneral);
    

    相同的 JSFfiddle 链接 - http://jsfiddle.net/sdyoxx2r/9/

    【讨论】:

    • 很高兴它有帮助:) @Tanja Forsberg
    • 虽然有一个并发症。如果我选择日期01/08/2017,则结果为12/6/2017。它只增加一天。你能检查一下jsfiddle吗?
    • @Tanja Forsberg 我已经更新了我的答案,请检查一下。
    【解决方案2】:

    当您获得&lt;input type="hidden" value="11" id="days" /&gt; 的值时,它将以字符串形式返回值。

    所以你需要将天数从字符串转换为整数。

    var pickerOptsGeneral = {
    format: "dd/mm/yyyy",
    autoclose: true,
    minView: 2,
    maxView: 2
    };
    $('#firstDate').datetimepicker(pickerOptsGeneral).on('changeDate',function(ev){
     var days        = parseInt($('#days').val());
     var oldDate = new Date(ev.date);
     var newDate = new Date();
     newDate.setDate(oldDate.getDate() + days);
     secondDate.val(newDate.getDate()+"/"+newDate.getMonth()+1)+"/"+newDate.getFullYear());
     secondDate.datetimepicker('update');
    });
    var secondDate = $('#secondDate').datetimepicker(pickerOptsGeneral);
    

    【讨论】:

    • 感谢您的建议。我在上面的评论中提到了另一个错误。
    • 试试这个newDate.setMonth(oldDate.getMonth(),oldDate.getDate()+days);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    相关资源
    最近更新 更多