Terminate early on null so that we can drop later casts and null checks.
Drop extra date verification, we can just catch an Exception when DateTime constructor cannot parse the date.
As a bonus, negative dates like -0001-11-30T00:00:00+00:00 will be accepted.
-0001-11-30T00:00:00+00:00
will be accepted.