TryParseDate verifies parsed numbers

The parsed numbers now must make sense for the function to return true.
This includes the year being between 1 and 9999.
Month being between 1 and 12
And Day being between 1 and the number of days in that particular month.