]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
Collect week-calendar utility functions in src/lib/units/week-calendar-utils
authorIskren Chernev <iskren.chernev@gmail.com>
Thu, 29 Oct 2015 07:26:21 +0000 (00:26 -0700)
committerIskren Chernev <iskren.chernev@gmail.com>
Mon, 9 Nov 2015 02:53:13 +0000 (18:53 -0800)
src/lib/create/from-array.js
src/lib/units/day-of-year.js
src/lib/units/week-calendar-utils.js [new file with mode: 0644]
src/lib/units/week-year.js
src/lib/units/week.js

index 67d0bed998d8a5d2b116b7f7d1a9fae9d954d9e2..8df7a16ec7518d6a7ed563f3899141d53abfc236 100644 (file)
@@ -1,8 +1,6 @@
 import { createDate, createUTCDate } from './date-from-array';
 import { daysInYear } from '../units/year';
-import { weekOfYear } from '../units/week';
-import { weeksInYear } from '../units/week-year';
-import { dayOfYearFromWeeks } from '../units/day-of-year';
+import { weekOfYear, weeksInYear, dayOfYearFromWeeks } from '../units/week-calendar-utils';
 import { YEAR, MONTH, DATE, HOUR, MINUTE, SECOND, MILLISECOND } from '../units/constants';
 import { createLocal } from './local';
 import defaults from '../utils/defaults';
index fcd1ee0033fd17bb18ca66889e8db19ce551adc9..62d4de8b44ae0f9356e3f7a9888fe986aad382c1 100644 (file)
@@ -24,34 +24,6 @@ addParseToken(['DDD', 'DDDD'], function (input, array, config) {
 
 // HELPERS
 
-//http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
-export function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) {
-    var week1Jan = 6 + firstDayOfWeek - firstDayOfWeekOfYear, janX = createUTCDate(year, 0, 1 + week1Jan), d = janX.getUTCDay(), dayOfYear, resYear, resDayOfYear;
-    if (d < firstDayOfWeek) {
-        d += 7;
-    }
-
-    weekday = weekday != null ? 1 * weekday : firstDayOfWeek;
-
-    dayOfYear = 1 + week1Jan + 7 * (week - 1) - d + weekday;
-
-    if (dayOfYear <= 0) {
-        resYear = year - 1;
-        resDayOfYear = daysInYear(resYear) + dayOfYear;
-    } else if (dayOfYear > daysInYear(year)) {
-        resYear = year + 1;
-        resDayOfYear = dayOfYear - daysInYear(year);
-    } else {
-        resYear = year;
-        resDayOfYear = dayOfYear;
-    }
-
-    return {
-        year: resYear,
-        dayOfYear: resDayOfYear
-    };
-}
-
 // MOMENTS
 
 export function getSetDayOfYear (input) {
diff --git a/src/lib/units/week-calendar-utils.js b/src/lib/units/week-calendar-utils.js
new file mode 100644 (file)
index 0000000..229b35e
--- /dev/null
@@ -0,0 +1,66 @@
+import { daysInYear } from './year';
+import { createLocal } from '../create/local';
+import { createUTCDate } from '../create/date-from-array';
+
+//http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
+export function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) {
+    var week1Jan = 6 + firstDayOfWeek - firstDayOfWeekOfYear, janX = createUTCDate(year, 0, 1 + week1Jan), d = janX.getUTCDay(), dayOfYear, resYear, resDayOfYear;
+    if (d < firstDayOfWeek) {
+        d += 7;
+    }
+
+    weekday = weekday != null ? 1 * weekday : firstDayOfWeek;
+
+    dayOfYear = 1 + week1Jan + 7 * (week - 1) - d + weekday;
+
+    if (dayOfYear <= 0) {
+        resYear = year - 1;
+        resDayOfYear = daysInYear(resYear) + dayOfYear;
+    } else if (dayOfYear > daysInYear(year)) {
+        resYear = year + 1;
+        resDayOfYear = dayOfYear - daysInYear(year);
+    } else {
+        resYear = year;
+        resDayOfYear = dayOfYear;
+    }
+
+    return {
+        year: resYear,
+        dayOfYear: resDayOfYear
+    };
+}
+
+// firstDayOfWeek       0 = sun, 6 = sat
+//                      the day of the week that starts the week
+//                      (usually sunday or monday)
+// firstDayOfWeekOfYear 0 = sun, 6 = sat
+//                      the first week is the week that contains the first
+//                      of this day of the week
+//                      (eg. ISO weeks use thursday (4))
+export function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) {
+    var end = firstDayOfWeekOfYear - firstDayOfWeek,
+        daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(),
+        adjustedMoment;
+
+
+    if (daysToDayOfWeek > end) {
+        daysToDayOfWeek -= 7;
+    }
+
+    if (daysToDayOfWeek < end - 7) {
+        daysToDayOfWeek += 7;
+    }
+
+    adjustedMoment = createLocal(mom).add(daysToDayOfWeek, 'd');
+    return {
+        week: Math.ceil(adjustedMoment.dayOfYear() / 7),
+        year: adjustedMoment.year()
+    };
+}
+
+// HELPERS
+
+export function weeksInYear(year, dow, doy) {
+    return weekOfYear(createLocal([year, 11, 31 + dow - doy]), dow, doy).week;
+}
+
index c9a974c337c0b2434fba2de53d296c29c0a833ab..fe64b17dab1b0bca8a75629cfcba03dfe2e26fcf 100644 (file)
@@ -2,11 +2,10 @@ import { addFormatToken } from '../format/format';
 import { addUnitAlias } from './aliases';
 import { addRegexToken, match1to2, match1to4, match1to6, match2, match4, match6, matchSigned } from '../parse/regex';
 import { addWeekParseToken } from '../parse/token';
-import { weekOfYear } from './week';
+import { weekOfYear, weeksInYear, dayOfYearFromWeeks } from './week-calendar-utils';
 import toInt from '../utils/to-int';
 import { hooks } from '../utils/hooks';
 import { createLocal } from '../create/local';
-import { dayOfYearFromWeeks } from './day-of-year';
 import { createUTCDate } from '../create/date-from-array';
 
 // FORMATTING
@@ -52,12 +51,6 @@ addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
     week[token] = hooks.parseTwoDigitYear(input);
 });
 
-// HELPERS
-
-export function weeksInYear(year, dow, doy) {
-    return weekOfYear(createLocal([year, 11, 31 + dow - doy]), dow, doy).week;
-}
-
 // MOMENTS
 
 export function getSetWeekYear (input) {
index 178f6b55131db38376f21195571711848c7cedac..7ea3201edcb49aa56f8c43376d67ec0b871a8d61 100644 (file)
@@ -4,6 +4,7 @@ import { addRegexToken, match1to2, match2 } from '../parse/regex';
 import { addWeekParseToken } from '../parse/token';
 import toInt from '../utils/to-int';
 import { createLocal } from '../create/local';
+import { weekOfYear } from './week-calendar-utils';
 
 // FORMATTING
 
@@ -28,34 +29,6 @@ addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token)
 
 // HELPERS
 
-// firstDayOfWeek       0 = sun, 6 = sat
-//                      the day of the week that starts the week
-//                      (usually sunday or monday)
-// firstDayOfWeekOfYear 0 = sun, 6 = sat
-//                      the first week is the week that contains the first
-//                      of this day of the week
-//                      (eg. ISO weeks use thursday (4))
-export function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) {
-    var end = firstDayOfWeekOfYear - firstDayOfWeek,
-        daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(),
-        adjustedMoment;
-
-
-    if (daysToDayOfWeek > end) {
-        daysToDayOfWeek -= 7;
-    }
-
-    if (daysToDayOfWeek < end - 7) {
-        daysToDayOfWeek += 7;
-    }
-
-    adjustedMoment = createLocal(mom).add(daysToDayOfWeek, 'd');
-    return {
-        week: Math.ceil(adjustedMoment.dayOfYear() / 7),
-        year: adjustedMoment.year()
-    };
-}
-
 // LOCALES
 
 export function localeWeek (mom) {