Serial Input - Parsing multiple formats

As mentioned, use the date and time as two examples, but do not limit the ideas on parsing multiple formats to only those two items. As additional examples of input, real can be detected by the char[] containing a period and integer containing, well, an integer (no :, /, or .).

Text (commands if you will) will also be sent, be a strcmp can be used to test for legit commands.

strstr() can be used to separate the format. So the question become how to detect non-sensible data? I was looking at the atoi() and atof() functions and am concerned that they return 0 on failure. How does one distinguish between 0=failure and 0=entered value?

Now it is expanded further to include out of range values, such as:
98765 to be converted to an integer
12345.67890 to be converted to a float - though I don't see the issue here - What would happen to atof() if .123456 was sending (ie., missing or without the leading zero)
More than 32 characters sent without sending the end marker.