Just for fun, here is how to calculate weekday without using calendar or datetime functionality. Code is in 8th but formula is included in comments.
: wd \ [y,m,d] -- n
1 a:@ 3 n:< if \ if month < 3
1 ( 12 n:+ ) a:op! \ month=month+12
0 ' n:1- a:op! \ year=year-1
then
\ (day+int((month+1)*2.61)+(year mod 100)+int((year mod 100)/4)+(2*(3-(int(year/100) mod 4)))) mod 7
2 a:@ swap 1 a:@ n:1+ 2.61 n:* n:int
swap 0 a:_@ dup>r 100 n:mod
dup 4 n:/ n:int
3 r> 100 n:/ n:int 4 n:mod n:- 2 n:*
5 a:close ' n:+ 0 a:reduce 7 n:mod ;
: app:main
[2024,4,21] wd ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] caseof . cr ;
Outputs:
C:\temp\game>8th weekd.8th
Sunday
C:\temp\game>