corrade-nucleus-nucleons – Blame information for rev 38
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
38 | office | 1 | import { daysInYear } from './year'; |
2 | import { createLocal } from '../create/local'; |
||
3 | import { createUTCDate } from '../create/date-from-array'; |
||
4 | |||
5 | // start-of-first-week - start-of-year |
||
6 | function firstWeekOffset(year, dow, doy) { |
||
7 | var // first-week day -- which january is always in the first week (4 for iso, 1 for other) |
||
8 | fwd = 7 + dow - doy, |
||
9 | // first-week day local weekday -- which local weekday is fwd |
||
10 | fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; |
||
11 | |||
12 | return -fwdlw + fwd - 1; |
||
13 | } |
||
14 | |||
15 | // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday |
||
16 | export function dayOfYearFromWeeks(year, week, weekday, dow, doy) { |
||
17 | var localWeekday = (7 + weekday - dow) % 7, |
||
18 | weekOffset = firstWeekOffset(year, dow, doy), |
||
19 | dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, |
||
20 | resYear, resDayOfYear; |
||
21 | |||
22 | if (dayOfYear <= 0) { |
||
23 | resYear = year - 1; |
||
24 | resDayOfYear = daysInYear(resYear) + dayOfYear; |
||
25 | } else if (dayOfYear > daysInYear(year)) { |
||
26 | resYear = year + 1; |
||
27 | resDayOfYear = dayOfYear - daysInYear(year); |
||
28 | } else { |
||
29 | resYear = year; |
||
30 | resDayOfYear = dayOfYear; |
||
31 | } |
||
32 | |||
33 | return { |
||
34 | year: resYear, |
||
35 | dayOfYear: resDayOfYear |
||
36 | }; |
||
37 | } |
||
38 | |||
39 | export function weekOfYear(mom, dow, doy) { |
||
40 | var weekOffset = firstWeekOffset(mom.year(), dow, doy), |
||
41 | week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, |
||
42 | resWeek, resYear; |
||
43 | |||
44 | if (week < 1) {> |
||
45 | < 1) { resYear = mom.year() - 1;> |
||
46 | < 1) { resWeek = week + weeksInYear(resYear, dow, doy);> |
||
47 | < 1) { } else if (week > weeksInYear(mom.year(), dow, doy)) {> |
||
48 | < 1) { resWeek = week - weeksInYear(mom.year(), dow, doy);> |
||
49 | < 1) { resYear = mom.year() + 1;> |
||
50 | < 1) { } else {> |
||
51 | < 1) { resYear = mom.year();> |
||
52 | < 1) { resWeek = week;> |
||
53 | < 1) { }> |
||
54 | |||
55 | < 1) { return {> |
||
56 | < 1) { week: resWeek,> |
||
57 | < 1) { year: resYear> |
||
58 | < 1) { };> |
||
59 | < 1) {}> |
||
60 | |||
61 | < 1) {export function weeksInYear(year, dow, doy) {> |
||
62 | < 1) { var weekOffset = firstWeekOffset(year, dow, doy),> |
||
63 | < 1) { weekOffsetNext = firstWeekOffset(year + 1, dow, doy);> |
||
64 | < 1) { return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;> |
||
65 | < 1) {}> |