# Number of days between month1/day1/year1 and month2/day2/year2: # days(year2,month2,day2) - days(year1,month1,day1); days := proc(y,m,d) # y = (4-digit) year, m = month, d = day local f,y1,m1; f := floor(m/12+3/4); m1 := m+9-12*f; y1 := y-1+f; floor(365.25*y1)-floor(y1/100)+floor(y1/400)+floor(30.6*m1+.4 )+d end; wd := (y,m,d) -> irem(days(y,m,d)+2,7); # Weekday of month/day/year: weekday(year,month,day); weekday := (y,m,d) -> op(wd(y,m,d)+1,['Sun','M','Tu','W','Th','F','Sat']); # Examples: # > weekday(1997,12,25); # # Th # # > days(1997,12,25) - days(1912,4,14); # # 31301