如何将Date字段设置为等于另一个Date+Int值,该值表示月份值
How i can set a Date field to be equal to another Date + Int value which represents value in months
我正在开发一个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);
相关文章:
- React中的数据集表示
- 在事件上打开Materialize Date Picker
- 按从高到低对多个int变量进行排序
- 如何在Javascript中读取unsigned int
- 在经过DATE验证的列中创建null值
- 任何将(SSH)终端嵌入到一些HTML5表示系统中的想法(例如,show.js)
- 文本表示法VS.构造函数,用于在JavaScript中创建对象
- 如何将Date字段设置为等于另一个Date+Int值,该值表示月份值
- regex表示逗号,后跟空格或仅逗号
- 我将如何将其更改为循环和数组表示法
- 为什么要做新的.Date()与new相差1小时.日期().到ISOString()
- 如何使用Undercore和Backbone在HTML中表示模型属性
- 从int值来看,Javascript日期不正确
- 将JSON对象的表示形式更改为显式键/值格式
- 如何在JS中获得CryptoJS.HmacSHA256的摘要表示
- 在javascript中使用方括号表示法的嵌套对象
- 返回值+new Date()与Date.now()是否不同
- JavaScript警报适用于int,但不适用于string
- 如何从二进制int中获取百分比,每个位表示x%
- 如何确定为`Int,VarChar,Date,Time..`输入的模式等