如何添加月份到日期?js
How to add months to date ? Knockout js
我正在进行一些计算,我得到的是没有月份,所以我需要添加到开始日期和显示结束日期动态添加的月份。
My effort so far:
视图模型:
function calculation() {
var self = this;
self.months= ko.observable("");
self.StartDate = ko.observable(""); // On my get i get startdate like **2014-06-24**
self.EndDate = ko.computed(function () {
return self.StartDate() + ?? // i have no clue how to add
});
我的cshtml代码:
<input type="text" data-bind="value:$data.StartDate" />
<input type="text" data-bind="value:$data.EndDate" />
编辑:下面的建议,我试过这样做,但格式不符合标记遗憾
self.EndDate = ko.computed(function () {
var date = new Date(self.StartDate());
date.setMonth(date.getMonth() + 8); // tried static
return date.toLocaleDateString() ;
});
我得到了类似于2015年2月24日的东西,但我希望是2015-02-24,因为我以相同的格式通过了日期
欢迎提出建议
您必须考虑到随日期而来的各种边缘情况。例如,10月31日+ 1个月显然不是11月31日。然后你必须考虑到二月的天数取决于它是否是闰年。
看看Jazaret在这个问题中的答案,找出x个月后的确切日期:
如何在JavaScript中添加月份到日期?
然后你可以添加到你的代码:
self.EndDate = ko.computed(function () {
var date = new Date(self.StartDate());
return date.addMonths(5); // add however months you want
});
添加月份(例如将一个月添加到1月31日)可能会溢出days字段,并导致月份增加(在本例中,您将获得3月份的日期)。如果你想添加月份,然后溢出日期,那么。setmonth (base_date.getMonth()+monthsToAdd)可以工作,但当人们谈论增量月份时,很少会想到这一点。
当我不想超出月份时,我使用这个来为日期添加月份:
function addMonthsNoOverflow(dateParam, intParam) {
var sum = new Date(new Date(dateParam.getTime()).setMonth(dateParam.getMonth() + intParam);
if (sum.getDate() < dateParam.getDate()) { sum.setDate(0); }
return(sum);
}
指出:它通过消除溢出来处理29、30或31变成1、2或3的情况月的一天不是零索引,所以。setdate(0)是前一个月的最后一天。
http://jsfiddle.net/zjdj3zxz/1/下面是一个向日期添加月份的基本示例:
JSFiddle
操纵代码:var ViewModel = function () {
var self = this;
self.StartDate = ko.observable(new Date("2014-06-24"));
self.EndDate = ko.computed(function () {
var myDate = new Date(self.StartDate());
myDate.setMonth(myDate.getMonth() + 5)
return myDate;
});
};
$(function () {
var vm = new ViewModel();
ko.applyBindings(vm);
});
正如@AndrewC在他的帖子中所说,这并不包括边缘情况,你将不得不考虑每个月的不同天数,并根据你的需求处理它们。
编辑:请在您的项目中包含Moment.js库。这样,日期的计算和格式将非常容易。看一下文档中的例子就知道了。
所以,我相信这就是你想要的:
http://jsfiddle.net/var ViewModel = function(date, noOfMonths) {
this.calculation = ko.computed(function(){
var m = moment(date);
return m.add('months',noOfMonths).format('YYYY-MM-DD');
},this);
};
ko.applyBindings(new ViewModel(new Date('7/31/2014 17:15:00'), 4));
- 如何在moment.js中只比较日期
- 使用时刻.js从日期时间中提取时间
- Mongodb/JS:查找最短(最早)日期
- 如何用moment.js列出两个日期之间的所有月份
- 在瞬间格式化日期.js给出 1/1/2016
- 立即获取 EST 日期.js
- 使用日期.js分析方法,而不是当前日期
- ISO 8601日期JS解释差异-IE/FF与Chrome
- 当前日期js代码中字体颜色不变
- 使用时刻修改日期.js
- 如何使用控制器中的过滤器比较日期.js
- 日期.js“tt”格式不起作用
- 从周数生成日期.js
- 这是尝试解析带有时刻的 ASP.NET 日期.js库的错误还是我的代码错误
- 限制名称和日期js cookie每次会话只加载一次
- 生成两个范围之间的日期(js)
- 如何添加月份到日期?js
- 用日期JS/JQ填充字段
- 由时刻生成的日期.js具有无效的属性
- 如何在瞬间比较两个日期.js