From: Iskren Ivov Chernev Date: Wed, 29 Apr 2020 22:39:27 +0000 (+0300) Subject: [feature] Add isoWeeksInISOWeekYear (#5475) X-Git-Tag: 2.25.0~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d8e613ba0422be09d7fc4a25432a6e77e3a5f601;p=thirdparty%2Fmoment.git [feature] Add isoWeeksInISOWeekYear (#5475) --- diff --git a/src/lib/moment/prototype.js b/src/lib/moment/prototype.js index d472b1571..c45630cb7 100644 --- a/src/lib/moment/prototype.js +++ b/src/lib/moment/prototype.js @@ -86,8 +86,9 @@ import { getSetWeekYear, getSetISOWeekYear, getWeeksInYear, - getISOWeeksInYear, getWeeksInWeekYear, + getISOWeeksInYear, + getISOWeeksInISOWeekYear, } from '../units/week-year'; proto.weekYear = getSetWeekYear; proto.isoWeekYear = getSetISOWeekYear; @@ -108,6 +109,7 @@ proto.isoWeek = proto.isoWeeks = getSetISOWeek; proto.weeksInYear = getWeeksInYear; proto.weeksInWeekYear = getWeeksInWeekYear; proto.isoWeeksInYear = getISOWeeksInYear; +proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear; // Day import { getSetDayOfMonth } from '../units/day-of-month'; diff --git a/src/lib/units/week-year.js b/src/lib/units/week-year.js index 7c60a3645..211b2e9b4 100644 --- a/src/lib/units/week-year.js +++ b/src/lib/units/week-year.js @@ -99,6 +99,10 @@ export function getSetISOWeekYear(input) { } export function getISOWeeksInYear() { + return weeksInYear(this.year(), 1, 4); +} + +export function getISOWeeksInISOWeekYear() { return weeksInYear(this.isoWeekYear(), 1, 4); } diff --git a/src/test/moment/weeks_in_year.js b/src/test/moment/weeks_in_year.js index b2a50057b..6b20b177f 100644 --- a/src/test/moment/weeks_in_year.js +++ b/src/test/moment/weeks_in_year.js @@ -3,89 +3,112 @@ import moment from '../../moment'; module('weeks in year'); -test('isoWeeksInYear first day of ISO Year', function (assert) { +test('isoWeeksInYear', function (assert) { assert.equal( - moment('2003-12-29').isoWeeksInYear(), + moment([2005]).isoWeeksInYear(), + 52, + 'ISO year 2005 has 52 iso weeks' + ); + assert.equal( + moment([2006]).isoWeeksInYear(), + 52, + 'ISO year 2006 has 52 iso weeks' + ); + assert.equal( + moment([2009]).isoWeeksInYear(), + 53, + 'ISO year 2009 has 53 iso weeks' + ); + assert.equal( + moment([2010]).isoWeeksInYear(), + 52, + 'ISO year 2010 has 52 iso weeks' + ); +}); + +test('isoWeeksInISOWeekYear first day of ISO Year', function (assert) { + assert.equal( + moment('2003-12-29').isoWeeksInISOWeekYear(), 53, 'ISO year 2004 has 53 iso weeks' ); assert.equal( - moment('2005-01-03').isoWeeksInYear(), + moment('2005-01-03').isoWeeksInISOWeekYear(), 52, 'ISO year 2005 has 53 iso weeks' ); assert.equal( - moment('2006-01-02').isoWeeksInYear(), + moment('2006-01-02').isoWeeksInISOWeekYear(), 52, 'ISO year 2006 has 53 iso weeks' ); assert.equal( - moment('2007-01-01').isoWeeksInYear(), + moment('2007-01-01').isoWeeksInISOWeekYear(), 52, 'ISO year 2007 has 52 iso weeks' ); assert.equal( - moment('2007-12-31').isoWeeksInYear(), + moment('2007-12-31').isoWeeksInISOWeekYear(), 52, 'ISO year 2008 has 53 iso weeks' ); assert.equal( - moment('2008-12-29').isoWeeksInYear(), + moment('2008-12-29').isoWeeksInISOWeekYear(), 53, 'ISO year 2009 has 53 iso weeks' ); assert.equal( - moment('2010-01-04').isoWeeksInYear(), + moment('2010-01-04').isoWeeksInISOWeekYear(), 52, 'ISO year 2010 has 52 iso weeks' ); assert.equal( - moment('2011-01-03').isoWeeksInYear(), + moment('2011-01-03').isoWeeksInISOWeekYear(), 52, 'ISO year 2011 has 52 iso weeks' ); assert.equal( - moment('2012-01-02').isoWeeksInYear(), + moment('2012-01-02').isoWeeksInISOWeekYear(), 52, 'ISO year 2012 has 52 iso weeks' ); assert.equal( - moment('2012-12-31').isoWeeksInYear(), + moment('2012-12-31').isoWeeksInISOWeekYear(), 52, 'ISO year 2013 has 52 iso weeks' ); assert.equal( - moment('2013-12-30').isoWeeksInYear(), + moment('2013-12-30').isoWeeksInISOWeekYear(), 52, 'ISO year 2014 has 52 iso weeks' ); assert.equal( - moment('2014-12-29').isoWeeksInYear(), + moment('2014-12-29').isoWeeksInISOWeekYear(), 53, 'ISO year 2015 has 53 iso weeks' ); assert.equal( - moment('2016-01-04').isoWeeksInYear(), + moment('2016-01-04').isoWeeksInISOWeekYear(), 52, 'ISO year 2016 has 52 iso weeks' ); assert.equal( - moment('2017-01-02').isoWeeksInYear(), + moment('2017-01-02').isoWeeksInISOWeekYear(), 52, 'ISO year 2017 has 52 iso weeks' ); assert.equal( - moment('2018-01-01').isoWeeksInYear(), + moment('2018-01-01').isoWeeksInISOWeekYear(), 52, 'ISO year 2018 has 52 iso weeks' ); assert.equal( - moment('2018-12-31').isoWeeksInYear(), + moment('2018-12-31').isoWeeksInISOWeekYear(), 52, 'ISO year 2019 has 52 iso weeks' ); assert.equal( - moment('2019-12-30').isoWeeksInYear(), + moment('2019-12-30').isoWeeksInISOWeekYear(), 53, 'ISO year 2020 has 53 iso weeks' ); @@ -179,17 +202,17 @@ test('weeksInYear doy/dow = 0/6', function (assert) { test('isoWeeksInYear calendar year !== ISO year', function (assert) { var m = moment('2010-01-01'); assert.equal( - moment('2019-12-31').isoWeeksInYear(), + moment('2019-12-31').isoWeeksInISOWeekYear(), 53, 'December 31, 2019 is in ISO year 2020 and ISO year 2020 has 53 weeks' ); assert.equal( - moment('2020-12-31').isoWeeksInYear(), + moment('2020-12-31').isoWeeksInISOWeekYear(), 53, 'December 31, 2020 is in ISO year 2020 and ISO year 2020 has 53 weeks' ); assert.equal( - m.isoWeeksInYear(), + m.isoWeeksInISOWeekYear(), 53, '2010-01-01 is isoWeekYear 2009, which has 53 iso weeks' );