]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
[feature] Add weeksInWeekYear, fixes #3942
authorSowmya Viswanathan <sowmyavi@thoughtworks.com>
Thu, 23 Aug 2018 07:40:26 +0000 (13:10 +0530)
committerIskren Chernev <iskren.chernev@gmail.com>
Wed, 29 Apr 2020 14:36:54 +0000 (17:36 +0300)
src/lib/moment/prototype.js
src/lib/units/week-year.js
src/test/moment/weeks_in_year.js

index bbea60146df3ac8b470108ee768a513708a22c73..d472b1571d02cfae5928c6efb8eec176d392ed7f 100644 (file)
@@ -87,6 +87,7 @@ import {
     getSetISOWeekYear,
     getWeeksInYear,
     getISOWeeksInYear,
+    getWeeksInWeekYear,
 } from '../units/week-year';
 proto.weekYear = getSetWeekYear;
 proto.isoWeekYear = getSetISOWeekYear;
@@ -105,6 +106,7 @@ import { getSetWeek, getSetISOWeek } from '../units/week';
 proto.week = proto.weeks = getSetWeek;
 proto.isoWeek = proto.isoWeeks = getSetISOWeek;
 proto.weeksInYear = getWeeksInYear;
+proto.weeksInWeekYear = getWeeksInWeekYear;
 proto.isoWeeksInYear = getISOWeeksInYear;
 
 // Day
index 7e9815e2cd2c3eb1231f483ccc5d238e261ec604..243fb55bfc12f0c3f4a426b17f2282d38e094fe5 100644 (file)
@@ -106,9 +106,17 @@ export function getISOWeeksInYear() {
     return weeksInYear(this.isoWeekday(THURSDAY).year(), 1, 4);
 }
 
-export function getWeeksInYear() {
-    var weekInfo = this.localeData()._week;
-    return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
+export function getWeeksInYear () {
+    return getWeeksInGivenYear.call(this, this.year());
+}
+
+export function getWeeksInWeekYear () {
+    return getWeeksInGivenYear.call(this, this.weekYear());
+}
+
+function getWeeksInGivenYear(year) {
+    let weekInfo = this.localeData()._week;
+    return weeksInYear(year, weekInfo.dow, weekInfo.doy);
 }
 
 function getSetWeekYearHelper(input, week, weekday, dow, doy) {
index 99472e9105bcccb3a4b89deaa7b4000a7ca9199c..10eb7efe9f9708d43af87e4b2ff2996bf50259f7 100644 (file)
@@ -1,4 +1,4 @@
-import { module, test } from '../qunit';
+import {module, test} from '../qunit';
 import moment from '../../moment';
 
 module('weeks in year');
@@ -95,10 +95,10 @@ test('weeksInYear doy/dow = 1/4', function (assert) {
     moment.locale('1/4', { week: { dow: 1, doy: 4 } });
 
     assert.equal(moment([2004]).weeksInYear(), 53, '2004 has 53 weeks');
-    assert.equal(moment([2005]).weeksInYear(), 52, '2005 has 53 weeks');
-    assert.equal(moment([2006]).weeksInYear(), 52, '2006 has 53 weeks');
+    assert.equal(moment([2005]).weeksInYear(), 52, '2005 has 52 weeks');
+    assert.equal(moment([2006]).weeksInYear(), 52, '2006 has 52 weeks');
     assert.equal(moment([2007]).weeksInYear(), 52, '2007 has 52 weeks');
-    assert.equal(moment([2008]).weeksInYear(), 52, '2008 has 53 weeks');
+    assert.equal(moment([2008]).weeksInYear(), 52, '2008 has 52 weeks');
     assert.equal(moment([2009]).weeksInYear(), 53, '2009 has 53 weeks');
     assert.equal(moment([2010]).weeksInYear(), 52, '2010 has 52 weeks');
     assert.equal(moment([2011]).weeksInYear(), 52, '2011 has 52 weeks');
@@ -106,40 +106,76 @@ test('weeksInYear doy/dow = 1/4', function (assert) {
     assert.equal(moment([2013]).weeksInYear(), 52, '2013 has 52 weeks');
     assert.equal(moment([2014]).weeksInYear(), 52, '2014 has 52 weeks');
     assert.equal(moment([2015]).weeksInYear(), 53, '2015 has 53 weeks');
+    assert.equal(moment([2016]).weeksInYear(), 52, '2016 has 52 weeks');
+});
+
+
+test('weeksInWeekYear doy/dow = 1/4', function (assert) {
+    assert.equal(moment([2004]).weeksInWeekYear(), 52, '2004 has 52 weeks in week year');
+    assert.equal(moment([2005]).weeksInWeekYear(), 53, '2005 has 53 weeks in week year');
+    assert.equal(moment([2006]).weeksInWeekYear(), 52, '2006 has 53 weeks in week year');
+    assert.equal(moment([2007]).weeksInWeekYear(), 52, '2007 has 52 weeks in week year');
+    assert.equal(moment([2008]).weeksInWeekYear(), 52, '2008 has 52 weeks in week year');
+    assert.equal(moment([2009]).weeksInWeekYear(), 52, '2009 has 52 weeks in week year');
+    assert.equal(moment([2010]).weeksInWeekYear(), 52, '2010 has 53 weeks in week year');
+    assert.equal(moment([2011]).weeksInWeekYear(), 53, '2011 has 53 weeks in week year');
+    assert.equal(moment([2012]).weeksInWeekYear(), 52, '2012 has 52 weeks in week year');
+    assert.equal(moment([2013]).weeksInWeekYear(), 52, '2013 has 52 weeks in week year');
+    assert.equal(moment([2014]).weeksInWeekYear(), 52, '2014 has 52 weeks in week year');
+    assert.equal(moment([2015]).weeksInWeekYear(), 52, '2015 has 52 weeks in week year');
+    assert.equal(moment([2016]).weeksInWeekYear(), 53, '2016 has 53 weeks in week year');
 });
 
 test('weeksInYear doy/dow = 6/12', function (assert) {
     moment.locale('6/12', { week: { dow: 6, doy: 12 } });
 
     assert.equal(moment([2004]).weeksInYear(), 53, '2004 has 53 weeks');
-    assert.equal(moment([2005]).weeksInYear(), 52, '2005 has 53 weeks');
-    assert.equal(moment([2006]).weeksInYear(), 52, '2006 has 53 weeks');
+    assert.equal(moment([2005]).weeksInYear(), 52, '2005 has 52 weeks');
+    assert.equal(moment([2006]).weeksInYear(), 52, '2006 has 52 weeks');
     assert.equal(moment([2007]).weeksInYear(), 52, '2007 has 52 weeks');
-    assert.equal(moment([2008]).weeksInYear(), 52, '2008 has 53 weeks');
-    assert.equal(moment([2009]).weeksInYear(), 52, '2009 has 53 weeks');
-    assert.equal(moment([2010]).weeksInYear(), 53, '2010 has 52 weeks');
+    assert.equal(moment([2008]).weeksInYear(), 52, '2008 has 52 weeks');
+    assert.equal(moment([2009]).weeksInYear(), 52, '2009 has 52 weeks');
+    assert.equal(moment([2010]).weeksInYear(), 53, '2010 has 53 weeks');
     assert.equal(moment([2011]).weeksInYear(), 52, '2011 has 52 weeks');
     assert.equal(moment([2012]).weeksInYear(), 52, '2012 has 52 weeks');
     assert.equal(moment([2013]).weeksInYear(), 52, '2013 has 52 weeks');
     assert.equal(moment([2014]).weeksInYear(), 52, '2014 has 52 weeks');
-    assert.equal(moment([2015]).weeksInYear(), 52, '2015 has 53 weeks');
+    assert.equal(moment([2015]).weeksInYear(), 52, '2015 has 52 weeks');
 });
 
+
 test('weeksInYear doy/dow = 1/7', function (assert) {
     moment.locale('1/7', { week: { dow: 1, doy: 7 } });
 
-    assert.equal(moment([2004]).weeksInYear(), 52, '2004 has 53 weeks');
-    assert.equal(moment([2005]).weeksInYear(), 52, '2005 has 53 weeks');
+    assert.equal(moment([2004]).weeksInYear(), 52, '2004 has 52 weeks');
+    assert.equal(moment([2005]).weeksInYear(), 52, '2005 has 52 weeks');
     assert.equal(moment([2006]).weeksInYear(), 53, '2006 has 53 weeks');
     assert.equal(moment([2007]).weeksInYear(), 52, '2007 has 52 weeks');
-    assert.equal(moment([2008]).weeksInYear(), 52, '2008 has 53 weeks');
-    assert.equal(moment([2009]).weeksInYear(), 52, '2009 has 53 weeks');
+    assert.equal(moment([2008]).weeksInYear(), 52, '2008 has 52 weeks');
+    assert.equal(moment([2009]).weeksInYear(), 52, '2009 has 52 weeks');
     assert.equal(moment([2010]).weeksInYear(), 52, '2010 has 52 weeks');
     assert.equal(moment([2011]).weeksInYear(), 52, '2011 has 52 weeks');
-    assert.equal(moment([2012]).weeksInYear(), 53, '2012 has 52 weeks');
+    assert.equal(moment([2012]).weeksInYear(), 53, '2012 has 53 weeks');
     assert.equal(moment([2013]).weeksInYear(), 52, '2013 has 52 weeks');
     assert.equal(moment([2014]).weeksInYear(), 52, '2014 has 52 weeks');
-    assert.equal(moment([2015]).weeksInYear(), 52, '2015 has 53 weeks');
+    assert.equal(moment([2015]).weeksInYear(), 52, '2015 has 52 weeks');
+    assert.equal(moment([2016]).weeksInYear(), 52, '2016 has 52 weeks');
+});
+
+test('weeksInWeekYear doy/dow = 1/7', function (assert) {
+    assert.equal(moment([2004]).weeksInWeekYear(), 52, '2004 has 52 weeks in week year');
+    assert.equal(moment([2005]).weeksInWeekYear(), 53, '2005 has 53 weeks in week year');
+    assert.equal(moment([2006]).weeksInWeekYear(), 52, '2006 has 52 weeks in week year');
+    assert.equal(moment([2007]).weeksInWeekYear(), 52, '2007 has 52 weeks in week year');
+    assert.equal(moment([2008]).weeksInWeekYear(), 52, '2008 has 52 weeks in week year');
+    assert.equal(moment([2009]).weeksInWeekYear(), 52, '2009 has 52 weeks in week year');
+    assert.equal(moment([2010]).weeksInWeekYear(), 52, '2010 has 52 weeks in week year');
+    assert.equal(moment([2011]).weeksInWeekYear(), 53, '2011 has 53 weeks in week year');
+    assert.equal(moment([2012]).weeksInWeekYear(), 52, '2012 has 52 weeks in week year');
+    assert.equal(moment([2013]).weeksInWeekYear(), 52, '2013 has 52 weeks in week year');
+    assert.equal(moment([2014]).weeksInWeekYear(), 52, '2014 has 52 weeks in week year');
+    assert.equal(moment([2015]).weeksInWeekYear(), 52, '2015 has 52 weeks in week year');
+    assert.equal(moment([2016]).weeksInWeekYear(), 53, '2016 has 53 weeks in week year');
 });
 
 test('weeksInYear doy/dow = 0/6', function (assert) {