【问题标题】:Calculate end date from start date and number of days in jquery datepicker when i submit form当我提交表单时,从 jquery datepicker 中的开始日期和天数计算结束日期
【发布时间】:2017-04-28 06:31:22
【问题描述】:

当我输入天数和开始日期时我正在使用 jquery datepicker 我需要自动计算计算显示结束日期

这是我的表单提交功能

$("#promocode").on('submit', function(e){

    e.preventDefault(e);
    var valid_days = $(this).find("[name='valid_days']").val();
    var start_date= $(this).find("[name='start_date']").val();
    var end_date = new Date($(this).val());
    end_date.setDate(end_date.getDate() + valid_days);
    var end= $('#end_date').val( (end_date.getMonth() + 1)+ '/' + end_date.getDate() + '/' + end_date.getFullYear() );
    console.log(end);
});

当我输入天数和开始日期时,它会在我的结束日期字段中显示类似 NaN/NaN/NaN 的结束日期

那么问题是什么,有没有其他方法可以使用 jquery datepicker 获取我的结束日期

【问题讨论】:

  • 需要在这里给出开始日期值 var end_date = new Date(start_date);

标签: javascript jquery date datepicker


【解决方案1】:

使用parseIntlike 解析有效日期

// for number use ParseInt
var valid_days = parseInt($(this).find("[name='valid_days']").val());

并通过start_date 来计算其中的valid_days,

var valid_days = parseInt($(this).find("[name='valid_days']").val());
var start_date= $(this).find("[name='start_date']").val();
var end_date = new Date(start_date); // pass start date here
end_date.setDate(end_date.getDate() + valid_days);
var end= $('#end_date').val( (end_date.getMonth() + 1)+ '/' + end_date.getDate() + '/' + end_date.getFullYear() );
console.log(end);

【讨论】:

  • 它现在工作正常,但结束日期应该是这种格式 yyyy-dd-mm 我现在应该做什么
  • 只需更改顺序,如下所示var end= $('#end_date').val( end_date.getFullYear() + '-' +end_date.getDate() + '-' +(end_date.getMonth() + 1) );
  • 我改变了这个....但是一个月我选择4意味着它显示2017-4-26但我需要2017-04-26
  • @Karthiga 试试var end= $('#end_date').val(end_date.getFullYear() + '-' + ('0' + (end_date.getMonth()+1)).slice(-2)+ '-' + end_date.getDate() ); 你也可以对约会做同样的事情。
  • 在开始日期元素上使用 evetns,change,在有效日期元素上使用 keyup
【解决方案2】:

你能改一下试试吗?

end_date.setDate(end_date.getDate() + parseInt(valid_days));

【讨论】:

  • 没有相同的 NaN
【解决方案3】:

这可以帮助你。我不会泄露整个代码,因为您似乎知道自己在做什么

function plusToDate(currentDate, unit, howMuch) {

var config = {
    second: 1000, // 1000 miliseconds
    minute: 60000,
    hour: 3600000,
    day: 86400000,
    week: 604800000,
    month: 2592000000, // Assuming 30 days in a month
    year: 31536000000 // Assuming 365 days in year
};

var now = new Date(currentDate);

return new Date(now + config[unit] * howMuch);

}

这就是你使用它的方式

var today = new Date();
var theDayAfterTommorow = plusToDate(today, 'day', 2);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 2019-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    相关资源
    最近更新 更多