日期js不能加月
Date js cannot add months
大家好,我使用 Date js 库,添加额外月份时遇到问题。
这是我的简单代码:
var durationMonth = $('#periodId').find(':selected').data('id'); // value => 3 m
var startDate = $('#comencingDate').val(); // value -> 2015.12.14
$('#expiringDate').val(Date.parse(startDate + ' + ' + durationMonth).toString("yyyy-MM-dd"));
// This return 2016-03-03, but have to return 2016-03-13
这里是小演示http://jsfiddle.net/d9rttxta/1/
问题只出在几个月,几天和几年都可以。如果您有任何建议,我将很高兴听到。提前致谢。
预期结果:2016-03-13
实际结果:2016-03-03
将月份添加到日期会将日期-月份重置为该月的第一天。因此,您需要从值中提取日期部分,然后将其附加到月份值。
$('.change').on('click', function() {
var durationMonth = $('#periodId').find(':selected').data('id');
var startDate = $('#comencingDate').val();
$('#expiringDate').val(Date.parse(Date.parse(startDate).toString("dd") + ' + ' + durationMonth).toString("yyyy-MM-dd"));
});
工作示例:http://jsfiddle.net/d9rttxta/3/
更新:为了给未来年份的日期加上一个月,您可以尝试以下操作:
$('.change').on('click', function() {
var durationMonth = $('#periodId').find(':selected').data('id');
var startDate = $('#comencingDate').val();
var monthDiff = Date.parse(startDate).getMonth() - new Date().getMonth()
+ (12 * (Date.parse(startDate).getFullYear() - new Date().getFullYear()));
var calcDate = Date.parse(Date.parse(startDate).toString("dd") + ' + ' + durationMonth).toString("yyyy-MM-dd");
if(monthDiff > 0)
{
var n_calcDate = new Date(calcDate);
n_calcDate.setMonth(n_calcDate.getMonth() + monthDiff);
n_calcDate.setDate(n_calcDate.getDate() + 1);
calcDate = n_calcDate.toString("yyyy-MM-dd");
}
$('#expiringDate').val(calcDate);
});
大家好,我使用 Date js 库,添加额外月份时遇到问题。
这是我的简单代码:
var durationMonth = $('#periodId').find(':selected').data('id'); // value => 3 m
var startDate = $('#comencingDate').val(); // value -> 2015.12.14
$('#expiringDate').val(Date.parse(startDate + ' + ' + durationMonth).toString("yyyy-MM-dd"));
// This return 2016-03-03, but have to return 2016-03-13
这里是小演示http://jsfiddle.net/d9rttxta/1/
问题只出在几个月,几天和几年都可以。如果您有任何建议,我将很高兴听到。提前致谢。
预期结果:2016-03-13
实际结果:2016-03-03
将月份添加到日期会将日期-月份重置为该月的第一天。因此,您需要从值中提取日期部分,然后将其附加到月份值。
$('.change').on('click', function() {
var durationMonth = $('#periodId').find(':selected').data('id');
var startDate = $('#comencingDate').val();
$('#expiringDate').val(Date.parse(Date.parse(startDate).toString("dd") + ' + ' + durationMonth).toString("yyyy-MM-dd"));
});
工作示例:http://jsfiddle.net/d9rttxta/3/
更新:为了给未来年份的日期加上一个月,您可以尝试以下操作:
$('.change').on('click', function() {
var durationMonth = $('#periodId').find(':selected').data('id');
var startDate = $('#comencingDate').val();
var monthDiff = Date.parse(startDate).getMonth() - new Date().getMonth()
+ (12 * (Date.parse(startDate).getFullYear() - new Date().getFullYear()));
var calcDate = Date.parse(Date.parse(startDate).toString("dd") + ' + ' + durationMonth).toString("yyyy-MM-dd");
if(monthDiff > 0)
{
var n_calcDate = new Date(calcDate);
n_calcDate.setMonth(n_calcDate.getMonth() + monthDiff);
n_calcDate.setDate(n_calcDate.getDate() + 1);
calcDate = n_calcDate.toString("yyyy-MM-dd");
}
$('#expiringDate').val(calcDate);
});