我正在使用jquery datepicker
来获得2个日期。在我的情况下,我必须以这种格式d-M-y
获取日期。我正在使用它,以便能够将值插入oracle
数据库而无需任何格式化。问题是我需要计算两个日期之间的月份。例如:1-Oct-13
- 30-Oct-16
。
以下是我在js中获取日期的方式:
LastAssimDatePicker = (function() {
$( "#lastAssimilationDate" ).datepicker({
yearRange: "-20:+100",
changeMonth: true,
changeYear: true,
dateFormat: "d-M-y"
});
}),
LastAssimDateOverPicker = (function() {
$( "#lastAssimilationDateOver" ).datepicker({
yearRange: "-20:+100",
changeMonth: true,
changeYear: true,
dateFormat: "d-M-y"
});
}),
以上日期已分配到2 variables
- lastAssimilationDate
和LastAssimDateOver
问题是我真的找不到计算两个日期之间的月份的方法,而且我已经失去了大约2个小时。我很确定会有一个简单的解决方案,但作为初学者,我无法发现它。我知道这里有类似的主题,但我无法使其正常工作,或者它不符合我的问题。
答案 0 :(得分:4)
工作演示 http://jsfiddle.net/w54pq/ 或如果您想要两个月,请尝试此演示:http://jsfiddle.net/yQyJq/
这符合您的需求,可以有很多版本。
请注意,您可以根据需要进行各种组合,因此请随意使用此代码。
旧链接其中一个是我的旧回复:
希望这有助于:)
<强>码强>
$('.start,.end').datepicker();
$('.hulk').click(function () {
var sDate = $('.start').val();
var nDate = $('.end').val();
var startdate = new Date(sDate);
var enddate = new Date(nDate);
enddate.setDate(enddate.getDate() - startdate.getDate());
alert(monthDiff(startdate,enddate));
});
function monthDiff(d1, d2) {
var months;
months = (d2.getFullYear() - d1.getFullYear()) * 12;
months -= d1.getMonth() + 1;
months += d2.getMonth();
return months <= 0 ? 0 : months;
}
工作镜头
答案 1 :(得分:3)
由于您提到您不应该更改格式,因此我为您提供了解决方案。
在@ T.J的帮助下。克劳德Answer,我做了这个
d1 = new Date($( "#lastAssimilationDate" ).val());
d2 = new Date($( "#lastAssimilationDateOver").val());
alert(monthDiff(d1, d2));
选中此JSFiddle
不确定Nan
是否正在弹出,但我能够看到差异。
答案 2 :(得分:3)
function calcualteMonthYr(){
var fromDate =new Date($('#txtFrom').val()); //datepicker (text fields)
var toDate = new Date($('#txtTo').val()); // datepicker
var months;
months = (toDate.getFullYear() - fromDate.getFullYear()) * 12;
months += toDate.getMonth();
if (toDate.getDate() < fromDate.getDate())
{
months--;
}
$('#txtTimePeriod2').val(months);
}
// it also consider dates so you would get exact months ..