【问题标题】:how to add a day to a date using jquery datepicker如何使用jquery datepicker将一天添加到日期
【发布时间】:2011-01-02 13:38:47
【问题描述】:

我的网站上有 2 个文本框,分别使用 jquery 日期选择器来填写取件日期和送件日期。

我无法将还车日期值设置为比所选取货日期早一天。

这是我所拥有的:

$('.pickupDate').change(function() {
    var date2 = $('.pickupDate').datepicker('getDate', '+1d'); 
    $('.dropoffDate').datepicker('setDate', date2);
});

上述内容将执行,但下车文本框中的值将与提货值匹配,而不是提前一天。例如:如果我选择 01-01-2010,上面的代码会在下拉框中返回 01-01-2010 而不是 02-01-2010。

有什么想法吗?

感谢您的帮助, 丰富

【问题讨论】:

    标签: jquery jquery-ui datepicker


    【解决方案1】:

    试试这个:

     $('.pickupDate').change(function() {
      var date2 = $('.pickupDate').datepicker('getDate', '+1d'); 
      date2.setDate(date2.getDate()+1); 
      $('.dropoffDate').datepicker('setDate', date2);
    });
    

    【讨论】:

    • 谢谢。工作了一个享受:)
    • 以上对我也有用。但是为什么第 2 行的“+1d”部分呢?我从第二行中删除了“+1d”,它也可以工作。
    • 很好的解决方案,尝试了 10 种其他方法来增加 javascript 中的日期,但都没有奏效。
    • 第 2 行中的@thd '+1d' 不需要Datepicker getDate
    • 您知道为什么如果尝试将第三行和第四行简化为$('.dropoffDate').datepicker('setDate', date2.getDate()+1); 之类的内容会失败并增加 2 天而不是 1 天吗?演示:jsfiddle.net/507Lwkeb
    【解决方案2】:

    这个答案确实帮助我入门(菜鸟) - 但是当我将开始日期设置为 2014 年 12 月 31 日并添加 +1 以默认结束日期时,我遇到了一些奇怪的行为。我没有给我 01/01/2015 的结束日期,而是得到 02/01/2015 (!!!)。此版本会解析开始日期的组成部分,以避免这些年终异常。


     $( "#date_start" ).datepicker({
    
       minDate: 0,
       dateFormat: "mm/dd/yy",
    
       onSelect: function(selected) {
             $("#date_end").datepicker("option","minDate", selected); //  mindate on the End datepicker cannot be less than start date already selected.
             var date = $(this).datepicker('getDate');
             var tempStartDate = new Date(date);
             var default_end = new Date(tempStartDate.getFullYear(), tempStartDate.getMonth(), tempStartDate.getDate()+1); //this parses date to overcome new year date weirdness
             $('#date_end').datepicker('setDate', default_end); // Set as default                           
       }
    
     });
    
     $( "#date_end" ).datepicker({
    
       minDate: 0,
       dateFormat: "mm/dd/yy",
    
       onSelect: function(selected) {
         $("#date_start").datepicker("option","maxDate", selected); //  maxdate on the Start datepicker cannot be more than end date selected.
    
      }
    
    });
    

    【讨论】:

    • 这个答案对我有用。接受的答案不起作用。猜猜这可能取决于日期选择器的版本?无论如何,谢谢你!
    【解决方案3】:

    datepicker('setDate') 在 datepicker 中设置日期而不是在输入中。

    您应该添加日期并将其设置在输入中。

    var date2 = $('.pickupDate').datepicker('getDate');
    var nextDayDate = new Date();
    nextDayDate.setDate(date2.getDate() + 1);
    $('input').val(nextDayDate);
    

    【讨论】:

    • 我以前有过,但是当我使用它时,它只会输出像“Sun Jan 17 2010 00:00:00 GMT+0000 (GMT Standard Time)”而不是“17-01-2010”即使我指定了 dateformat 选项。很奇怪。不过感谢您的帮助。
    • @RichardReddy 输出 'Sun Jan 17 2010 00:00:00 GMT+0000 (GMT Standard Time)' 是正确的。 nextDayDateholds a Dateobject,所以当分配给输入 val 时,会发生 toString 隐式转换。
    猜你喜欢
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    • 2021-09-12
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多