Is the date alphabetical?
JavaScript (ES6), 101 bytes
Saved 4 bytes thanks to @Shaggy
Returns \$0\$ or \$1\$.
s=>'_414044406550'[[,m,d]=s.split`-`,+m]<(d=`_268328715819832871${6e12-12}`[+d])&d<'_6A9338704'[s[0]]
Try it online! or Test all dates! (includes some invalid inputs)
How?
Each month, each day and each year is mapped to an ID in \$[0..10]\$ (\$M\$, \$D\$ and \$Y\$ respectively) according to the following table. We then test if we have \$M<D\$ and \$D<Y\$.
The last part of the lookup string for day IDs is slightly compressed by using ${6e12-12}
, which expands to 5999999999988
(19th to 31st).
M | Month D | Day Y | Year (millennium)
----+---------------- ----+---------------- ----+-------------------
0 | April 1 | eighth 0 | eight thousand
0 | August 1 | eleventh ----+-------------------
0 | December 1 | eighteenth 3 | four thousand
----+---------------- ----+---------------- 3 | five thousand
1 | February 2 | first ----+-------------------
----+---------------- 2 | fifth 4 | nine thousand
4 | January 2 | fifteenth ----+-------------------
4 | March ----+---------------- 6 | one thousand
4 | May 3 | fourth ----+-------------------
4 | June 3 | fourteenth 7 | seven thousand
4 | July ----+---------------- ----+-------------------
----+---------------- 5 | ninth 8 | six thousand
5 | October 5 | nineteenth ----+-------------------
5 | November ----+---------------- 9 | three thousand
----+---------------- 6 | second ----+-------------------
6 | September ----+---------------- 10 | two thousand
7 | seventh
7 | seventeenth
----+----------------
8 | third
8 | sixth
8 | tenth
8 | thirteenth
8 | sixteenth
8 | thirtieth
8 | thirty-first
----+----------------
9 | twelfth
9 | twentieth
9 | twenty-*