如何使用jquery datepicker将一天添加到日期

Posted

技术标签:

【中文标题】如何使用jquery datepicker将一天添加到日期【英文标题】:how to add a day to a date using 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。

有什么想法吗?

感谢您的帮助, 丰富

【问题讨论】:

【参考方案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 隐式转换。

以上是关于如何使用jquery datepicker将一天添加到日期的主要内容,如果未能解决你的问题,请参考以下文章

jquery.datepicker怎么指定日期为每个月最后一天???

jQuery DatePicker:如何将年份数组传递给 yearRange 下拉列表

jquery 中datepicker 插件 问题

Jquery Datepicker 返回错误的月份 JSF

jquery datepicker onChangeMonthYear

jQuery ui datepicker,从onSelect获取星期几