RosettaCodeData/Task/Calendar/Mathematica/calendar-2.math

24 lines
1.0 KiB
Plaintext

monthlyCalendar[y_, m_] :=
Module[{
days = {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday},
months = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"},
d1, shortDays, offset, daysInMonth},
d1 = DayOfWeek[{y, m, 1}];
daysInMonth[year_, month_] := DaysBetween[{year, month, 1}, {If[month == 12, year + 1, year], If[month == 12, 1, month + 1], 1}];
shortDays = (StringTake[ToString[#], 3] & /@ days);
offset = d1 /. Thread[days -> Range[0, 6]];
Grid[
Prepend[
Prepend[
Partition[
PadRight[PadLeft[Range[daysInMonth[y, m]], daysInMonth[y, m] + offset, ""],
36, "" ],
7],
shortDays],
{months[[m]], SpanFromLeft}]]]