Expand/Shrink

week_number

Definition: sequence res = week_number(object y, integer m=0, d=0)
Description: y: a year such as 2022, or a result from date() or a timedate.
m: a month 1..12, ignored/overidden if y is a sequence.
d: a day 1..31, ignored/overidden if y is a sequence.
Returns {y[-1],1..52}
pwa/p2js: Supported.
Comments: Note that days prior to the first Monday of the year are classed as week 52 of the preceding year.

Fairly obviously, week_number({2022,12,15}) yields the same result as week_number(2022,12,15), and
week_number({2022}) will simply crash because the sequence isn’t long enough/has no month or day.
No special protection is afforded for, say, the 31st of February, or other invalid months/days (as yet).

Not suitable for use with years prior to the introduction of the Gregorian calendar.
Returns 0 if y < 1752.
Example:
?week_number(2022,1,1)      -- prints {2021,52}     -- (A Saturday)
?week_number(2022,1,2)      -- prints {2021,52})    -- (A Sunday)
?week_number(2022,1,3)      -- prints {2022,1})     -- (The first Monday)
?week_number(2022,1,4)      -- prints {2022,1})     -- (Tuesday)
?week_number(2022,1,9)      -- prints {2022,1})     -- (Sunday)
?week_number(2022,1,10)     -- prints {2022,2})     -- (The second Monday)
?week_number(2022,12,31)    -- prints {2022,52})    -- (New Years Eve)
Implementation: See builtins\pdates.e (an autoinclude) for details of the actual implementation.
See Also: date, day_of_week