From: Tim Wood Date: Tue, 28 Feb 2012 17:43:19 +0000 (-0800) Subject: Added moment.fn.daysInMonth X-Git-Tag: 1.5.0~19 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a701fc383d8d25203c2825eb202f3e844c64cd92;p=thirdparty%2Fmoment.git Added moment.fn.daysInMonth See #180 --- diff --git a/moment.js b/moment.js index b2b893c5f..8ce2705ee 100644 --- a/moment.js +++ b/moment.js @@ -637,6 +637,10 @@ zone : function () { return this._d.getTimezoneOffset(); + }, + + daysInMonth : function () { + return this.clone().month(this.month() + 1).date(0).date(); } }; diff --git a/test/moment/days_in_month.js b/test/moment/days_in_month.js new file mode 100644 index 000000000..e591b1cb9 --- /dev/null +++ b/test/moment/days_in_month.js @@ -0,0 +1,23 @@ +var moment = require("../../moment"); + +exports.days_in_month = { + "days in month" : function(test) { + test.expect(12); + var months = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + for (var i = 0; i < 12; i++) { + test.equal(moment([2011, i]).daysInMonth(), + months[i], + moment([2011, i]).format('L') + "should have " + months[i] + " days.") + } + test.done(); + }, + + "days in month leap years" : function(test) { + test.expect(4); + test.equal(moment([2010, 1]).daysInMonth(), 28, "Feb 2010 should have 29 days"); + test.equal(moment([2100, 1]).daysInMonth(), 28, "Feb 2100 should have 29 days"); + test.equal(moment([2008, 1]).daysInMonth(), 29, "Feb 2008 should have 29 days"); + test.equal(moment([2000, 1]).daysInMonth(), 29, "Feb 2000 should have 29 days"); + test.done(); + } +};