Is this a legal date? - April Fools' edition
JavaScript (ES6),  62 60  59 bytes
Takes input as a 0-padded string. Returns \$0\$ for false or a positive integer for true.

s=&gt;(m=s[2]+s[3])&lt;13&amp;31-(m^2?~m%9%2:s%4?1:2)&gt;(s/=1e4)&amp;&amp;~~s*m

Try it online!
or Check all possible outputs against an ungolfed implementation
Commented
s =&gt;                // s = input string
  (m = s[2] + s[3]) // m = month, as a string
  &lt; 13 &amp;            // make sure that m is less than 13
  31 - (            // compute the upper bound for this month:
    m ^ 2 ?         //   if the month is not February:
      ~m % 9 % 2    //     use either 31 or 32
    :               //   else:
      s % 4 ?       //     if this is not a leap year:
        1           //       use 30
      :             //     else:
        2           //       use 29
  )                 // end of upper bound computation
  &gt; (s /= 1e4)      // make sure that it's greater than the day
  &amp;&amp; ~~s * m        // and finally make sure that day * month is not zero