Without using any package, condition sequentially using \ifcase ... \or ... \fi
. The fact that you're only using calendar dates, one can assume that #1
will range between 1..12 and #2
between 1..31. One can build in checks to ensure that certain dates do not exist (like February 29th 2001, say).

\documentclass{article}
\newcommand{\Calendar}[3]{%
\ifcase #1\or% 0
January\or % 1
February\or % 2
March\or % 3
April\or % 4
May\or % 5
June\or % 6
July\or % 7
August\or % 8
September\or % 9
October\or % 10
November\or % 11
December% 12
\fi
\space
#2%
\ifcase #2\or% 0
st\or % 1
nd\or % 2
rd\or % 3
th\or th\or th\or th\or th\or th\or th\or % 4, 5, 6, 7, 8, 9, 10,
th\or th\or th\or th\or th\or th\or th\or th\or th\or th\or % 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
st\or % 21
nd\or % 22
rd\or % 23
th\or th\or th\or th\or th\or th\or th\or % 24, 25, 26, 27, 28, 29, 30
st% 31
\fi
\space
#3%
}
\begin{document}
\Calendar{2}{2}{1989}
\Calendar{1}{31}{1990}
\Calendar{3}{23}{1991}
\end{document}
datetime2
package.