如何获得2个日期之间的月份

我正在使用jquery datepicker以获得2个日期。 在我的情况下,我必须以这种格式dMy获取日期。 我正在使用它,以便能够将值插入到oracle数据库中而无需任何格式化。 问题是我需要计算两个日期之间的月份。 例如: 1-Oct-1330-Oct-16

以下是我在js中获取日期的方法:

 LastAssimDatePicker = (function() { $( "#lastAssimilationDate" ).datepicker({ yearRange: "-20:+100", changeMonth: true, changeYear: true, dateFormat: "dMy" }); }), LastAssimDateOverPicker = (function() { $( "#lastAssimilationDateOver" ).datepicker({ yearRange: "-20:+100", changeMonth: true, changeYear: true, dateFormat: "dMy" }); }), 

上述日期分配给2 variableslastAssimilationDateLastAssimDateOver

问题是我真的找不到计算两个日期之间的月份的方法,而且我已经失去了大约2个小时。 我很确定会有一个简单的解决方案,但作为初学者,我无法发现它。 我知道这里有类似的主题,但我不能让它工作,或者它不适合我的问题。

既然你提到你不应该改变格式我有一个解决方案给你。

在@TJ Crowder’s Answer的帮助下,我做到了这一点

 d1 = new Date($( "#lastAssimilationDate" ).val()); d2 = new Date($( "#lastAssimilationDateOver").val()); alert(monthDiff(d1, d2)); 

检查这个JSFiddle

不确定Nan是否正在爆发,但我能够看到差异。

在此处输入图像描述

工作演示 http://jsfiddle.net/w54pq/ 或者如果你想要两个月都包括试试这个演示: http : //jsfiddle.net/yQyJq/

这符合您的需求,可以有很多版本。

请注意,您可以根据需要进行各种组合,因此请随意使用此代码。

旧链接其中一个是我的旧回复:

  • 如何使用javascript添加/减去日期?
  • JavaScript中两个日期之间的月份差异

希望这有助于:)

 $('.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; } 

工作拍摄

在此处输入图像描述

  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 ..