如何将Date字段设置为等于另一个Date+Int值,该值表示月份值

How i can set a Date field to be equal to another Date + Int value which represents value in months

本文关键字:Date+Int 表示 另一个 Date 字段 设置      更新时间:2023-09-26

我正在开发一个asp.net mvc-4 web应用程序。我的视图中有三个字段:-

-实时日期(使用jQuery DatePicker填充)-结束日期-月长

<input Value="31/05/2016" class="datepicker" data-val="true" data-val-date="The field Live Date must be a date." id="LiveDate" name="LiveDate" type="text" value="31/05/2016 00:00:00" /> 
<input Value="31/10/2016" class="datepicker" data-val="true" data-val-date="The field End Date must be a date." disabled="disabled" id="EndDate" name="EndDate" type="text" value="31/10/2016 00:00:00" />  
<input class="text-box single-line" data-val="true" data-val-number="The field Contract Length (In Months) must be a number." data-val-required="The Contract Length (In Months) field is required." id="ContractLength" name="ContractLength" type="number" value="5" /> 

现在我想使用jQuery来执行以下操作:-

结束日期等于生存日期+月长度。

因此,如果用户选择日期为2000年1月1日并且月份长度为3。那么结束日期应该等于2000年4月1日。所以换句话说,如果用户更改了生存日期和/或月份长度,我希望结束日期更改。。。有人能做阿迪夫切吗?

编辑:-

目前我的实时日期格式是dateFormat: "dd/mm/yy"

现在我尝试了以下jquery:-

 $("#LiveDate, #ContractLength").change(function () {
            var st = new Date($("#LiveDate").val());
            var month = $("#ContractLength").val();
            $("#EndDate").val(st.getDate() + '/'+(new Date(st.setMonth(st.getMonth() + month)).getMonth() + 1) + '/' + st.getFullYear());
        });

但目前,如果我的生存日期=31/05/2016,合同长度=4,那么结束日期将是5/5/2023!!!不知道为什么?

你可以试试这个:

$("#start, #month").change(function()
{
  var st = new Date($("#start").val());
  var month = $("#month").val();
  $("#end").val((new Date(st.setMonth(st.getMonth() + month)).getMonth() + 1) + '/' + st.getDate() + '/' +  st.getFullYear());  
}).change(); // optional

示例:https://jsfiddle.net/DinoMyte/ez8cgsx7/2/

或者通过定义用户定义的jquery函数:

$.fn.addMonths = function()
{ 
  var st = new Date($("#start").val());
  var month = $("#month").val();
  $("#end").val((new Date(st.setMonth(st.getMonth() + month)).getMonth() + 1) + '/' + st.getDate() + '/' +  st.getFullYear());  
};
$("#start,#month").change(function()
{ 
 $("#end").addMonths(month);
}).change();

示例:https://jsfiddle.net/DinoMyte/ez8cgsx7/3/

您可以使用以下内容:

Date.prototype.addMonths = function(months) {
  var dat = new Date(this.valueOf());
  dat.setMonth(dat.getMonth() + months);
  return dat;
}

然后这样称呼它:

myDate = myDate.addMonths(lengthInMonths);

这是一个实现了以下功能的JSBin:

https://jsbin.com/yozikexiwa/1/edit?js,控制台

endDateObj.setMonth(startDateObj.getMonth() + monthsToBeAdded);

var startDate = $('.pickupDate').datepicker('getDate');
var endDate = new Date();
endDate.setDate(startDate.getMonth() + monthsToAdd);
$('input').val(endDate);